Cela concerne essentiellement le premier script.
Il faut tester pour savoir, ça dépend :
- du code HTTP retourné par Apache lors d'un fatal error de script PHP
- du comportement du navigateur face à ce code HTTP et son influence sur les évènements DOM du chargement d'un page.
Le 2ème script étant une ébauche d'une requête Ajax, les plantages de page sont à gérer au niveau de la couche Ajax (XHR).
ksss a écrit :
l'utilisateur change de page tout court, je pense que ça interrompt l'envoi nan?
|
Il s'agit d'un autre problème. Un script PHP peut continuer de s'exécuter après une déconnexion du navigateur sous certaines conditions :
- http://php.net/manual/fr/features. [...] ndling.php
- http://www.php.net/manual/fr/funct [...] -abort.php
- http://www.php.net/manual/fr/funct [...] -limit.php
Dans ce cas on peut imaginer une sorte d'appel récursif de la page PHP qui s'auto-appelle pour tolérer les fatal errors.
Code :
- ignore_user_abort(true); // ignore la déconnexion
- set_time_limit(0); // temps illimité
- if (@$_REQUEST['selfcall'] == 1) {
- // faire des trucs qui sont susceptibles de planter
- // fatal errors etc.
- } else {
- file_get_content("http://$_SERVER[SERVER_NAME]/$_SERVER[REQUEST_URI]?selfcall=1" ); // ou composer une url correct selon les besoins
- }
|
Ici, l'intérêt de l'Ajax est limité puisqu'on n'en a plus besoin, et pour suivre la tâche en arrière-plan c'est un peu plus compliqué.
Message édité par czh le 22-09-2010 à 01:29:39