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 :

register_shutdown_function et max_execution_time


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 23
    Par défaut register_shutdown_function et max_execution_time
    Ne sachant pas trop où poster, je le fais ici, en espérant ne pas être totalement à coté de la plaque

    register_shutdown_function() lance une fonction automatiquement à la fin de l'exécution du script, jusque là, pas de problèmes

    Par contre, quand le script s'arrête à cause du timeout, est-ce que cette fonction s'applique ? Et si c'est le cas, comment se passe la gestion du temps lors de l'execution de cette fonction ? Autrement dis, est-ce qu'elle peut tourner infiniment sans obéir à max_execution_time puisque le script a déjà expiré?

    Merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Je dirai que le plus simple c'est de tester pour se faire son idée non?

    Perso, je m'étais posé la meme question dans le cas d'un destructeur d'une classe, que se passe-t-il si le max_execution_time est dépassé, le destructeur est-il appelé? Et si oui que se passe-t-il si le destructeur rentre en boucle infinie?

    Dans ce cas là, le destructeur était bien appelé meme si le script avait dépassé le max_execution_time et il était une nouvelle fois soumis à ce max_execution_time. Ca fonctionne surement de la même manière de ton cas, mais teste le rapidement (un while(1) dans un script et un while(1) dans ta fonction register_shutdown_function() devrait te montrer ca rapidement).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 23
    Par défaut
    Effectivement, ça reste le plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    set_time_limit(3);
     
    register_shutdown_function('test');
     
    while(1) {}
     
    function test() {
    	while(1) {}
    }
    Donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Fatal error: Maximum execution time of 3 seconds exceeded in /***/ on line 9
    Fatal error: Maximum execution time of 3 seconds exceeded in /***/ on line 14
    Donc voilà un moyen simple de doubler les temps d'exécution autorisés par les hébergeurs

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] problème de dépassement du max_execution_time
    Par AsQuel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/06/2007, 16h00
  2. [Configuration] réglage du max_execution_time ?
    Par kij dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 05/03/2007, 17h33
  3. [Configuration] Batch PHP et max_execution_time
    Par zoullou dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 06/12/2006, 19h39
  4. [Système] max_execution_time : la doc ment-elle ?
    Par talvins dans le forum Langage
    Réponses: 5
    Dernier message: 20/01/2006, 10h46
  5. register_shutdown_function : Argument de classe
    Par JiJiJaco dans le forum Langage
    Réponses: 3
    Dernier message: 27/06/2005, 18h29

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