herky
natürlicher fressfeind
|
gibts eine Möglichkeit in php das ende der "Übertragung" zu kommunizieren aber das Script weiter laufen zu lassen um aufwändigere arbeiten nachher durch zu führen?
eine art footer *g* ? der sagt dass das document hier endet und der browser nicht weiter auf input warten braucht?
greets,
herky
|
COLOSSUS
AdministratorGNUltra
|
Du kannst im PHP-Script einen Prozess, der die eigentliche Arbeit verrichtet, wegforken, und dann das Script beenden. Die exec()-Wrapper in PHP bringen sicher eine dafuer brauchbare Funktionalitaet mit.
|
herky
natürlicher fressfeind
|
coole idee - leider ist der inode server auf dem ich arbeite nicht bereit für pcntl_fork() ... und die werden wohl nicht ihre php cgi wegen mir neu compilen
|
COLOSSUS
AdministratorGNUltra
|
Dann wuerde ich einen cronjob anlegen, der jede Minute in ein Verzeichnis schaut, dort Dateien nach einem bestimmten Namensschema aufgreift, und deren Inhalt ausfuehrt. (Wie du da Security einbaust, ist deine Sache - Moeglichkeiten gibt's viele.) Dein PHP-Script macht dann nichts Anderes mehr, als diese Dateien in das Job-Verzeichnis zu schreiben und sich zu beenden - und der Cronjob holt sie spaetestens 60 Sekunden spaeter ab, um sie auszufuehren.
|
watchout
Legendundead
|
Es gibt in PHP sowohl eine ini-direktive als auch eine Funktion welche im Prinzip genau das erreicht was du willst: http://www.php.net/manual/en/misc.c...nore-user-aborthttp://www.php.net/manual/en/functi...-user-abort.phpDas zeigt dann beim User natürlich keine fertig geladene Seite an, wenn du aber einen ob_flush();flush(); am ende machst hat das keinen echten Nachteil für den User. Eine für den User noch weniger bemerkbare Methode ist es am Ende deines Scripts eine neue Connection zu einem *anderen* Script aufzubauen, welches dann die eigentlichen Aufgaben erledigt. Das vom User aufgerufene Script kann dann auch gleich die Connection wieder trennen - das 2. Script läuft weiter (dank ignore-user-abort())
|