Hello Du Einer,
... dann geb ich meinen Senf auch noch dazu:
Wenn Du in einem Script die sleep()-Funktion benutzt, scheint die Execution-time von vorne zu beginnen. Das kann aber nur ein Bug sein, or is it a feature?
Jedenfalls zählt nur die Netto-Ausführungszeit. Sleep-Sequenzen zählen keinesfalls dazu. Man sollte aber bei Benutzung von Sleep() im Script selber dafür Sorge tragen, dass es irgendwann endet, spätestens mit dem Abbruch der "Verbindung" mit dem Client.
Diese Zeile sollte dann wesentlicher Bestandteil des Scriptes sein:
while (!connection_aborted())
Es kann sonst passieren, dass man beliebig viele Instanzen verbrät für nutzlos weiterlaufende Scripte.
------------------------------------------------------------
<?php #### connection.php ####
Testet auf Userabort
set_time_limit(1);
echo "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.1 Transitional//EN">\n";
echo "<HTML>\n";
echo "<HEAD>\n";
echo " <TITLE>Dauerlauf</TITLE>\n";
echo "</HEAD>\n";
echo "<BODY>\n";
$ok = ignore_user_abort();
echo $ok."<br />";
while (!connection_aborted())
{
$dir = @mkdir("test");
$fehler = $php_errormsg;
echo getmypid()." ".time()." $fehler ".(($dir===false)?"FALSE":"TRUE")."<br />";
flush();
sleep(1);
}
echo "</body>\n";
echo "</html>";
?>
-------------------------------------------------------
Kleines Spielprogramm zu dem Thema...
Das mkdir steht nur drin, um einen Fehler zu provozieren. Es provoziert aber leider keinen Kanal-Fehler. Musst Dir also was anderes ausdenken dafür; z.B. fopen() auf eine nicht freigegebene Ressource.
Wenn nämlich ein File-Channel-Error vorliegt, funktioniert flush() nicht mehr ordnungsgemäß.
Liebe Grüße aus http://www.braunschweig.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen