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 :

Fatal error: Maximum execution time of 30 seconds exceeded


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 371
    Par défaut Fatal error: Maximum execution time of 30 seconds exceeded
    Bonjour,
    Dans mon code, j'ai toujours ce message qui s'affiche "Fatal error: Maximum execution time of 30 seconds exceeded in ...".
    Le seul problème est que ce message n'est jamais localisé au même endroit dans mes fichiers.
    J'ai remarqué que ce message arrivait environ au bout de 183000 ms (un peu plus de 3 minutes).
    Je n'arrive pas à savoir d'ou vient le problème.

    Pour information, voici ce que je fait:
    Je cherche a vérifier et à mettre à jour un référentiel pour une application.
    je récupère le référentiel (5450 lignes comportants 3 informations chacune + 317 ligne comportant 1 ou 3 informations).
    Chacune des information est vérifiée à partir du référentiel de l'entreprise. Pour chacune des vérifications, j'ouvre et je ferme la connection à la base de données.

    D'ou vient mon problème?

    cordialement,
    vandman

  2. #2
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Bonjour,

    le temps d’exécution de ton script est trop long, tu peux utiliser set_time_limit() pour éviter ce genre de souci (http://php.net/manual/fr/function.set-time-limit.php)

    Sinon, pourquoi fermer ou ouvrir la connexion BDD à chaque fois ?

  3. #3
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 371
    Par défaut
    Bonjour,
    Merci pour la réponse, j'avais déjà appliqué cette méthode.
    Dans une de mes boucles, j'ai fait comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach ($array_GroupeCodeAdm['groupe_codes'] as $cle => $champ) {
     set_time_limit(30);
    ...
    }
    J'ai la sensation que ce n'est pas bon, mais ca fonctionne???
    Par contre, je ne comprends toujours pas, car je suis largement au dessus des 30 secondes. Pourquoi attendre plus de 3 minutes pour me dire que ma requette est longue?
    Cordialement,

    Vandman

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le set_time_limit() se met evidemment une seule fois en début de script.
    Sinon il suffit de lire la documentation :
    Lorsqu'elle est appelée, set_time_limit() remet le compteur à zéro. En d'autres termes, si la limite par défaut est à 30 secondes, et qu'après 25 secondes d'exécution du script l'appel set_time_limit(20) est fait, alors le script tournera pendant un total de 45 secondes avant de finir.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Pour compléter la réponse de sab' et la doc : si tu appelles set_time_limit dans une boucle, tu remets le compteur à 0 à chaque tour de boucle, mais l'erreur ne prend en compte que le dernier appel pour faire l'affichage du message d'erreur.

    Et évidemment, ça pourrait être une bonne idée d'essayer d'optimiser un peu ton script si c'est possible
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre très actif
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Par défaut
    Pour chacune des vérifications, j'ouvre et je ferme la connection à la base de données.
    Est-ce nécessaire ? Car c'est potentiellement ça qui prend du temps. Ouvre la connexion au début du traitement et après avoir terminé tes vérifications

Discussions similaires

  1. Wamp - Fatal error: Maximum execution time of 300 seconds
    Par sam soul dans le forum Débuter
    Réponses: 19
    Dernier message: 26/11/2013, 22h07
  2. [Wamp] Erreur instantannée -> Fatal error: Maximum execution time of 30 seconds exceeded
    Par Villon dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 05/12/2012, 10h56
  3. Fatal error: Maximum execution time of 30 seconds exceeded
    Par dubitoph dans le forum Doctrine2
    Réponses: 5
    Dernier message: 19/12/2011, 08h47
  4. Réponses: 4
    Dernier message: 21/07/2006, 15h33

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