:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte
Unternehmen im
Anbieterverzeichnis von SELFPHP
:: SELFPHP Forum ::
Fragen rund um die Themen PHP? In über
120.000 Beiträgen finden Sie sicher die passende
Antwort!
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
:: Qozido ::
Die Bilderverwaltung mit Logbuch für
Taucher und Schnorchler.
|
|
connection_status |
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
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
|
|
|
|
|
|
|