| 

.NET C# Java Javascript Exception

7
Moin allerseits.

Ich habe folgende Situation:
Um einen bestimmten Zugriff auf einer Seite zu loggen ruft mein PHP-Skript per file_get_contents() eine Web-Adresse auf und übergibt GET-Parameter. Um die Ladezeit zu verkürzen möchte ich, dass dieses aufgerufene Skript sofort eine Antwort schickt, auch wenn es im Hintergrund weitere Operationen ausführt. Funktioniert das mit PHP?

Das wäre, als ob ich per HTTP eine Adresse im Browser aufrufe, die mir sofort ein 'OK!' ausgibt, aber im Hintergrund noch 1 min lang die Daten verarbeitet. Funktioniert so etwas ganz grundsätzlich mit HTTP?

Danke schonmal für die Antworten..
News:
19.01.2012
johny7 521 1 8
4 Antworten
0
Meinst du vielleicht flush()?
19.01.2012
Floyd 14,6k 3 9
0
Hi.

Ja das geht.
Du kannst mit flush(); das Senden des Ausgabepuffers erzwingen.

In etwa so:

print 'hallo';
flush();
print ' welt';
flush();
# hie weitere PHP Anweisungen ......


Das Ganze funktioniert natürlich nur wenn keine Ausgabepuffer verwendet werden und flush(); von der php.ini her erlaubt ist.

Sven
SaaS-Secure.com
Git Hosting
19.01.2012
SRuttloff 263 4
Das kenne ich (müsste ich dazu schreiben). Das Problem ist: Ich weiß nicht, ob der Browser oder in diesem Fall das aufrufende PHP-Skript auf weitere Ausgaben warten wird. Wie kann ich dem Aufrufenden Skript oder Browser signalisieren: So, das war alles, jetzt kommt nichts mehr?
johny7 19.01.2012
Wenn PHP die Skriptausführung beendet, wird die Verbindung zum Browser (der Browser kann auch ein PHP Skript sein ;-)) abgebaut. Meintest Du das?
SRuttloff 19.01.2012
0
Guten morgen,
ich denke, du musst mit deinem PHP Skript tatsächliche, auch trotz flush() auf die Abarbeitung und die Laufzeit warten, da es sich hier nicht um parallele Verarbeitung handelt.

Mir viele aber eine andere Möglichkeit ein, um dein Problem zu lösen. Bau ein kleines Javascript in deiner Website ein. Darin kannst du die benötigten GET Parameter (ich würde sie serilizieren) ablegen und per Ajax an deinen Logserver senden. Dort die GET Daten wieder entpacken und verarbeiten. In diesem Fall musst du noch nicht mal auf eine Rückgabe von deinem Logserver warten. Es sei denn, du brauchst von dort Daten zum Anzeigen. Dann musst du diese halt per JS wieder in die Seite einbauen.

Gruß Jens
20.01.2012
XJenso 297 7
0
Ein richtiges Multithreading gibt es meines wissens bei PHP nicht.
Schau Dir aber curl_multi_init und curl_multi_exec an, damit kannst Du das gewünschte Verhalten simulieren
20.01.2012
Jaksa 4,0k 1 8

Stelle deine Php-Frage jetzt!