Opmerking: Het volgende is alleen actief in PHP 3.0.7 en hoger.
Intern in PHP wordt de connectie status bijgehouden. Er zijn 3
mogelijke statussen mogelijk:
0 - NORMAL
1 - ABORTED
2 - TIMEOUT
Als een PHP script normaal draait is de NORMAL status actief.
Zogauw een gebruiker de HTTP connectie sluit is de ABORTED status
actief. Dit gebeurt meestal als de gebruiker op z'n STOP knop klikt.
Als de door PHP bijgehouden tijdlimiet (zie set_time_limit())
overschreden word, is de TIMEOUT status actief.
Je kunt er voor kiezen jouw script te be?digen wanneer een gebruiker
de connectie met de server sluit, echter is het soms handig om een script
door te laten lopen, zelfs als er geen browser is om de output te ontvangen.
Standaard wordt echter jouw script gestopt wanneer de gebruiker de connectie sluit.
Dit gedrag kan gewijzigd worden met de ignore_user_abort php.ini directive of met
de corresponderende php_ignore_user_abort Apache .conf directive of
het makkelijkst met de ignore_user_abort() functie.
Als je PHP niet vertelt het sluiten van een connectie te negeren zal
je script gestopt worden zogauw dit gebeurd. Er is een uitzondering,
als je een shutdown functie hebt geregistreerd met de register_shutdown_function()
functie zal PHP zogauw hij ontdekt dat er geen connectie meer is, proberen
deze shutdown functie aan te roepen. Deze functie wordt echter ook
aangeroepen als je script op een normale manier eindigt. Als je alleen
actie wilt ondernemen als de gebruiker de connectie sluit kun je
gebruik maken van de connection_aborted() functie.
Deze functie geeft TRUE als de connectie gesloten is.
Jouw script kan ook be?digd worden door de ingebouwde script timer.
De standaard timeout is 30 seconden. Dit kan veranderd worden met
de max_execution_time php.ini directive of met de corresponderende
php_max_execution_time Apache .conf directive alsmede met de
set_time_limit() functie. Als de toegestane tijd
word overschreden wordt het script be?digd en net zoals in
het geval dat de gebruiker de connectie sluit word er een shutdown
functie aangeroepen mits deze geregistreerd is. In deze shutdown
functie kun je controleren of een timeout de oorzaak is van het aanroepen
van de shutdown function. Dit doe je met de connection_timeout()
functie. Deze functie geeft TRUE als een timeout de oorzaak was.
Een ding om te onthouden is dat de ABORTED status en de TIMEOUT status
allebei actief kunnen zijn op het zelfde moment. Dit is pas mogelijk
als je PHP verteld om zgn. 'user aborts' (gebruikt sluit connectie)
te negeren. PHP zal merken dat de gebruiker de connectie gesloten heeft
maar het script blijft draaien. Als het tijdslimiet bereikt word, wordt
het script be?digd en de shutdown functie aangeroepen.
Je zal merken dat als dit het geval is zowel connection_timeout()
als connection_aborted() TRUE geven. Je kunt deze
statussen met 1 functie controleren, namelijk
connection_status(). Deze functie geeft een
bitfield met de huidig actieve statussen. Dus als beide statussen
actief zijn zou het 3 geven.