| |
| * Link führt ins Internet |
|
| |
Befehl | Version | Beschreibung | Inhalt der Datei zahlen.txt | Beispiel 1 | Ausgabe 1 | Beispiel 2 | Ausgabe 2 | Inhalt der Datei zahlen.txt | Beispiel 3 | Ausgabe 3 |
Befehl
| int connection_status ( void ) |
Version
| (PHP 3 >= 3.0.7, PHP 4, PHP 5) |
Beschreibung
Mit connection_status() kann man sich den internen Verbindungsstatus von PHP zurückgeben lassen.
Folgende drei (bzw. vier - siehe unten) Zustandsmöglichkeiten können eintreten:
. 0 - NORMAL
. 1 - ABORTED
. 2 - TIMEOUT
. 3 - ABORTED und TIMEOUT
Ein aktives PHP-Skript hat normalerweise den Status NORMAL, es sei denn, dass durch irgendein Vorkommnis dieser Status geändert wird. Dabei gibt es mehrere Möglichkeiten. Zum einen kann der User das laufende Skript abbrechen und somit den Status auf ABORTED setzen, oder es kann vorkommen, dass das Skript länger läuft, als das eingestellte Zeitlimit zulässt (Standard-Timeout in der Apache-Konfigurationsdatei ist 30 Sekunden, oder über set_time_limit() eine vorgegebene Zeit). Bei Überschreiten dieses Limits wird der Verbindungsstatus auf TIMEOUT gesetzt. Anhand dieser drei Werte kann man nun entscheiden, wie man mit diesem Status umgehen möchte. Oftmals will man gerade beim Abbruch durch den User noch wichtige Daten retten. Beachten Sie bitte, dass die Funktion connection_status() gleichzeitig den Staus ABORTED und TIMEOUT besitzen kann. Dies geschieht gerade dann, wenn man mit der Funkton ignore_user_abort() den Benutzerabbruch unterbindet. Dennoch kann es zu einem TIMEOUT kommen. In diesem Fall gibt die Funktion den Wert 3 (ABORTED + TIMEOUT) zurück, weil neben dem Timeout auch der (folgenlose) Benutzerabbruch registriert wurde.
Siehe auch:
connevtion_aborted()
. connection_timeout()
. register_shutdown_function() |
Inhalt der Datei zahlen.txt
Timeout - Monitore||17"-Monitor||Monday 30th of July 2001 10:32:38 PM
|
Beispiel 1
<?PHP
register_shutdown_function('countdown');
set_time_limit(10);
$produktseite = 'Monitore';
$produkt = '17"-Monitor';
$zeit = date('l dS of F Y h:i:s A');
for($x = 1; $x <= 55555555; $x++){
echo $x . '<br>';
}
echo 'Ein simpler Shop<br>';
function countdown(){
$var = connection_status();
switch($var){
case 0:
echo 'Alles OK - weiter gehts!';
break;
case 1:
global $produktseite, $produkt, $zeit;
$werte = $produktseite . '||' . $produkt . '||' . $zeit . "\n";
$fp = fopen('statistik.txt', 'a');
fwrite($fp, $werte);
fclose($fp);
break;
case 2:
global $produktseite, $produkt, $zeit;
$werte = 'Timeout - ' . $produktseite . '||' . $produkt . '||' . $zeit . "\n";
$fp = fopen('timeout.txt', 'a');
fwrite($fp, $werte);
fclose($fp);
break;
}
}
?>
|
Ausgabe 1
1
2
3
.
.
.
51290
51291
Fatal error: Maximum execution time of 10 seconds exceeded in e:/apache/htdocs/php/index.php on line 9
|
Beispiel 2
<?PHP
register_shutdown_function('countdown');
$produktseite = 'Monitore';
$produkt = '17"-Monitor';
$zeit = date('l dS of F Y h:i:s A');
for($x = 1; $x <= 5; $x++){
echo $x . '<br>';
}
echo 'Ein simpler Shop<br>';
function countdown(){
$var = connection_status();
switch($var){
case 0:
echo 'Alles OK - weiter gehts!';
break;
case 1:
global $produktseite, $produkt, $zeit;
$werte = $produktseite . '||' . $produkt . '||' . $zeit . "\n";
$fp = fopen('statistik.txt', 'a');
fwrite($fp,$werte);
fclose($fp);
break;
case 2:
global $produktseite, $produkt, $zeit;
$werte = 'Timeout - ' . $produktseite . '||' . $produkt . '||' . $zeit . "\n";
$fp = fopen('timeout.txt', 'a');
fwrite($fp, $werte);
fclose($fp);
break;
}
}
?>
|
Ausgabe 2
1
2
3
4
5
Ein simpler Shop
Alles OK - weiter gehts!
|
Inhalt der Datei zahlen.txt
Monitore||17"-Monitor||Monday 30th of July 2001 10:30:15 PM
|
Beispiel 3
<?PHP
// Wie Beispiel 1, allerdings ein Browserabbruch durch den User
// vor Verstreichen der 10 Sekunden
?>
|
Ausgabe 3
1
2
3
.
.
.
26926
26927
26928
|
|
|
|
|
|
|
|