Hallo Leute,
Ich habe bereits im Forum nachgesehen aber nichts geeignetes gefunden.
Ich will mit ignore_user_abort(TRUE) dafür sorgen daß ein Skript vollständig aufgerufen wird. Auf anderen Servern benutze ich das auch erfolgreich aber auf dem aktuellen will es einfach nicht klappen. Ich habe auch versucht über Google etwas brauchbares zu finden, bin aber höchstens auf das gleiche Problem ohne Lösung gekommen. Wenn ich allerdings die Hinweise richtig gelesen habe geht es um den CGI-Modus der die Funktionalität von ignore_user_abort irgendwie beeinflußt - genaueres konnte ich leider nicht herausfinden.
MiniSystemInfo:
System: Linux infong 2.4 #1 SMP Tue May 23 17:47:33 CEST 2006 i686 unknown
Server API: CGI
safe_mode: Off
Ich habe folgenden Code zum Testen (teils von php.net):
-----------------------------------------------------------------------
// Ignore user aborts and allow the script
// to run forever
ignore_user_abort(TRUE);
set_time_limit(0);
$fp = fopen('protokoll.txt', 'w');
fwrite($fp, 'Skriptstart ... ');
fclose($fp);
echo 'Testing connection handling in PHP';
// Run a pointless loop that sometime
// hopefully will make us click away from
// page or click the "Stop" button.
while(1)
{
echo 'loop ... ';
// Did the connection fail?
if(connection_status() != CONNECTION_NORMAL)
{
break;
}
// Sleep for 10 seconds
sleep(10);
}
// If this is reached, then the 'break'
// was triggered from inside the while loop
// So here we can log, or perform any other tasks
// we need without actually being dependent on the
// browser.
$fp = fopen('protokoll.txt', 'a');
fwrite($fp, 'Skriptende');
fclose($fp);
-----------------------------------------------------------------------
Leider beinhaltet die "protokoll.txt" nur "Skriptstart ..." wenn ich während der loop abbreche, also läuft der Skript nicht weiter. Ich würde mich freuen wenn mir jemand mit Tipps oder möglichen Workarounds geben könnte um den Skript dennoch fertig auszuführen.
Gruß
Horatius