AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PHP: Echo bevor ein Skript läuft

Ein Thema von API · begonnen am 25. Okt 2022 · letzter Beitrag vom 28. Okt 2022
Antwort Antwort
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#1

PHP: Echo bevor ein Skript läuft

  Alt 25. Okt 2022, 16:48
Ich möchte eine "Bitte warten"-Meldung ausgeben, bevor ein PHP-Skript ausgeführt wird, aber sie wird gleichzeitig mit den anderen Echo-Meldungen ausgegeben.

Code:
 <?php
header('Content-type: text/html; charset=utf-8');
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Expires: Mon, 24 Sep 2012 04:00:00 GMT");

ob_start();
echo "Bitte warten";
ob_flush();
flush();
sleep(1);

run_a_function();

function run_a_function() {
    // execute some php code...
    echo "1";
    // execute some php code...
    echo "2";
    // more..
   
}
?>

Geändert von TBx (28. Okt 2022 um 07:18 Uhr) Grund: Dreckfuhler gemopst
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#2

AW: PHP: Echo bevor eine Skript läuft

  Alt 25. Okt 2022, 17:18
Theoretisch würde ob_flush funktionieren, ABER

ich bin mit fast sicher, dass dein Provider dir heimlich einen Handler unterschiebt.
Viele haben einen CompressionsHandler und/oder CacheHandler standardmäßig aktiviert.

siehe ob_get_level

Du müsstest also das Flush auf allen Handlern machen, aber kann sein, dass es bei der Compression nicht richtig funktioniert,
bzw. es kann sein, dass der Client (Browser) den unvollständigen Stream nicht verarbeitet und dort nichts angezeigt wird, bevor es komplett da ist.


Lösung:
In den Einstellungen deines WabSpaces, bzw. vermutlich mit irgendeinem Befehl z.B. in der .htaccess, diesen Default-Handler deaktivieren.

Oder ALLE Handler erstmal beenden (wichtig, muß gemacht werden, bevor irgendwelche Daten raus gehn, weil z.B. kompiriert und gefolgt von unkomprimiert geht nicht zusammen)
z.B. so oft ob_end_clean, bis ob_get_level 0 sagt.


Alternativ:
Dein Script gibt die Meldung aus und beendet sich.
Dann wird via JavaScript ein anderes Script oder sich selbst (mit einem Parameter) aufgerufen, wo dann die Aktion läuft.
Entweder weiterleiten, wo der alte Text so lange da bleibt, bis fertig geladen
oder ala AJAX den Aufruf nur intern laden und dann dessen Rückgabe in die Ausgabe der aktuellen Seite schreiben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Okt 2022 um 17:24 Uhr)
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#3

AW: PHP: Echo bevor eine Skript läuft

  Alt 25. Okt 2022, 17:25
Zitat:
z.B. so oft ob_end_clean, bis ob_get_level 0 sagt.
Wie würde das konkret aussehen?
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#4

AW: PHP: Echo bevor eine Skript läuft

  Alt 25. Okt 2022, 17:27
Übrigens: Dieselbe Frage wurde auf SO gestellt. Obwohl sich dort x-Tausende Benutzer herumtummeln, habe ich dort noch keine einzige Anwort erhalten.
Ein Lob auf die DP, welche um ein Vielfaches kleiner ist und trotzdem schneller Antworten liefert!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#5

AW: PHP: Echo bevor eine Skript läuft

  Alt 25. Okt 2022, 17:29
eine While-Schleife?

hab's lange nicht mehr gemacht (war damals selber mal auf dieses Problemchen gestoßen )

irgendwie so while (ob_get_level() > 0) ob_end_clean();
danach kannst ein neues/eigenes OB starten, oder Ohne weiterarbeiten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Okt 2022 um 17:42 Uhr)
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#6

AW: PHP: Echo bevor eine Skript läuft

  Alt 26. Okt 2022, 00:59
Hab's nun so gelöst: Am Anfang des Skriptes diese 2 Zeilen ausführen:

Code:
while (@ob_end_flush());
ob_implicit_flush(true);
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#7

AW: PHP: Echo bevor eine Skript läuft

  Alt 26. Okt 2022, 01:05
Wie gesagt, bei end_flush mußt du etwas aufpassen, wenn die was ausgeben aber das zum den nachfolgenden Ausgaben nicht passt.
z.B. ein Header/Startcode für Komprimierung aber anschließend nichts mehr komprimiert ist, dann kann das nachfolgende womöglch nicht mehr gelesen/verstanden werden.

theoretisch sollte zwar noch nichts in den Buffers drin sein, weil vorher keine Ausgaben in deinem Script ... aber schiebt dir der Anbieter vorher/nachher irgendwas unter, dann war's das (ja, z.B. so mancher "kostenloser" Anbieter baut dir in deine "Webseite" gern auch mal Werbung oder Dergleichen ein)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#8

AW: PHP: Echo bevor eine Skript läuft

  Alt 28. Okt 2022, 01:41
Auf dem lokalen Rechner mit Xampp wird das echo sichtbar nacheinander ausgegeben, beim webhoster (3 verschiedene probiert) will es einfach nicht. Habe sehr viele codes, u.a. von SO probiert, keiner geht.
Kann mir jedoch fadt nicht vorstellen, dass es dazu keine (einfache) Lösung gibt.
  Mit Zitat antworten Zitat
Monday

Registriert seit: 24. Aug 2012
103 Beiträge
 
FreePascal / Lazarus
 
#9

AW: PHP: Echo bevor eine Skript läuft

  Alt 28. Okt 2022, 03:55
Ich denke nicht, dass es möglich ist, mit PHP ein echo auszuführen, bevor ein Skript läuft.

Alternativ fällt mir ein:
- Eine Weiterleitung einrichten (mit bitte Warten)
- Mit JavaScript das die Meldung anzeigt und dann das PHP Skript nachladet
- oder mit Frames/iframes arbeiten
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#10

AW: PHP: Echo bevor eine Skript läuft

  Alt 28. Okt 2022, 23:44
- oder mit Frames/iframes arbeiten
Gibt's dazu irgendwo genauere Infos, wie das umgesetzt werden könnte?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz