IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Utilisation de connection_aborted()


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut Utilisation de connection_aborted()
    Bonjour,

    Est-ce qu'il y en a qui savent comment fonctionne la fonction connection_aborted() ?
    D'après la documentation PHP elle "indique si l'internaute a abandonné la connexion HTTP", mais en clair, ça veut dire quoi ?

    J'essaie de savoir si un utilisateur a arrêté le script en cours, par fermeture de la page ou appui sur le bouton du navigateur "Arrêter le chargement de la page" par exemple et j'ai trouvé cette fonction qui pourrait m'y aider.
    Cependant, elle renvoie toujours 0, donc que le script n'a pas été coupé.
    Je conjugue l'utilisation de cette fonction avec register_shutdown_function() comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    register_shutdown_function( 'catch_user_abort' );
     
    function catch_user_abort()
    {
       if ( connection_aborted() )
       {
          error_log( 'Script arrêté à ' . date( 'H:i:s' ) . "\n", 3, '/mon/fichier/de/logs.log' );
       }
    }
    sans grands résultats ...

    Donc si quelqu'un a des infos.

    Merci !

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Après de nouveaux tests, voilà ce qu'il en ressort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    register_shutdown_function( 'catch_user_abort' );
     
    function catch_user_abort()
    {
       error_log( "1\n", 3, '/mon/fichier/de/logs.log' );
       if ( connection_aborted() )
       {
          error_log( "2\n", 3, '/mon/fichier/de/logs.log' );
       }
    }
     
    for ( $i = 0; $i < 100000000; $i++ )
    {
        echo " \n";
    }
     
    echo 'fin';
    Ce code fonctionne parfaitement, les deux enregistrements dans le log se font bien lorsque je clique sur le bouton "Arrêter" de mon navigateur.

    Maintenant, à la place de la boucle je mets tout un traitement avec requêtes SQL assez lourdes et lorsque je clique sur le bouton "Arrêter" de mon navigateur il ne se passe rien. Même le premier log n'est pas écrit.

    Ma théorie : Lorsque le script est arrêté pendant que le serveur attend une réponse de MySQL, la fonction d'extinction n'est pas appelée.

    Pouvez-vous confirmer ?

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo