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

Langage PHP Discussion :

Gérer timeout d'une fonction PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 52
    Par défaut Gérer timeout d'une fonction PHP
    Bonjour à tous,

    mon application utilise LDAP pour authentifier des utilisateurs et parfois j'ai une fonction LDAP (search) qui ne répond pas et plante au bout de 30 sec (j'ai laissé la valeur par défaut).

    Pour éviter ce genre de problème, est-ce qu'il est possible de faire une sorte de try catch autour de cet appel de fonction et de catcher si ça dépasse 10 secondes par exemple?

    Merci d'avance.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    tu peux changer le temps du timeout avec stream_set_timeout, et faire un exception avec, set_error_handler

  3. #3
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 52
    Par défaut
    Merci pour ta réponse,

    le stream_set_timeout ne m'est pas utile je pense. J'ai redéfinit le timeout à 10 secondes et précisé mon handler. Cependant il ne catch pas les erreurs du type timeout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    public static function .....
    {
        ........
        set_error_handler( array( new Ldap(), 'timeoutHandler' ) );
        set_time_limit ( 10 );
        $entries	 = $ldapManager->search( $dn, $filter, $fields );
        .........
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    // Gestionnaire d'erreurs pour faire sauter le timeout
    public static function timeoutHandler($errno, $errstr, $errfile, $errline)
    { 
    	exit( 'caught' );
    	return true;
    }
    L'erreur n'est pas attrapée puisque j'ai sur ma page Fatal error: Maximum execution time of 10 seconds exceeded in ...

    Une idée de ce que je fais mal ou de si j'utilise pas la bonne méthode?

    merci d'avance


    EDIT :

    si j'exécute ça :

    set_error_handler(array(new Ldap(),'timeoutHandler')); set_time_limit ( 10 );
    $a = 10/ 0;

    j'ai bien le "caught" d'affiché

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    c'est pas super aisé a gérer ce genre d'erreur, exceptionnellement met un @

  5. #5
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 52
    Par défaut
    Je vois pas pourquoi mettre un @ devant changerait quelque chose.

    si le handler ne catch pas l'erreur, le @ ne va rien changer non ?

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par icl1c Voir le message
    Je vois pas pourquoi mettre un @ devant changerait quelque chose.

    si le handler ne catch pas l'erreur, le @ ne va rien changer non ?
    la fonction renvoie false

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/05/2007, 15h11
  2. demande d'une fonction php
    Par carmen256 dans le forum Langage
    Réponses: 5
    Dernier message: 20/01/2006, 19h52
  3. Réponses: 6
    Dernier message: 08/01/2006, 12h49
  4. Modifier un champs texte avec une fonction PHP (calcul TVA)
    Par Stella2809 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/11/2005, 00h55
  5. Réponses: 3
    Dernier message: 06/11/2005, 18h02

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