connection_aborted()
Introduction à la fonction connection_aborted()
La fonction connection_aborted() de PHP permet de vérifier si le client a interrompu la connexion au serveur web. Notez que cette fonction ne fonctionne qu'avec les SAPIs de serveur web (comme Apache ou Nginx) et n'est pas disponible dans le SAPI CLI. Elle est principalement utile pour les scripts à longue exécution ou les traitements par lots, où la déconnexion du client doit interrompre l'exécution. Contrairement aux délais d'attente côté serveur, cette fonction détecte spécifiquement lorsque le navigateur ou le script client ferme la connexion prématurément.
Utilisation de la fonction connection_aborted()
La fonction connection_aborted() retourne un booléen (true ou false). Lorsqu'elle est évaluée numériquement, true correspond à 1 (indiquant que le client a interrompu la connexion), et false correspond à 0 (indiquant que la connexion est toujours active).
Exemple d'utilisation de la fonction connection_aborted()
Voici un exemple d'utilisation de la fonction connection_aborted() en PHP :
<?php
// Typically used in long-running scripts or loops to detect client disconnection
if (connection_aborted()) {
// Clean up resources or stop processing
// e.g., close open files, release locks, or log the disconnection event
} else {
// Continue normal execution
}Dans cet exemple, la fonction connection_aborted() est appelée pour vérifier si le client a interrompu la connexion, et la valeur de retour est utilisée pour déterminer l'action à entreprendre.
Pour les scripts à longue exécution, elle est couramment utilisée à l'intérieur d'une boucle pour interrompre l'exécution prématurément :
<?php
$processing = true;
while ($processing) {
// Perform a chunk of work
do_work();
// Check if the client has disconnected
if (connection_aborted()) {
$processing = false; // Break the loop early
}
}
?>Conclusion
En conclusion, la fonction connection_aborted() en PHP peut s'avérer utile pour vérifier si le client a interrompu la connexion, et pour prendre les mesures appropriées en fonction de l'état de celle-ci.
Pratique
Quelle est la bonne façon de définir un timeout de connexion en PHP ?