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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Temps limite de 300 secondes (5 mn) introuvable


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut Temps limite de 300 secondes (5 mn) introuvable
    Bonjour,

    Je développe une application web qui nécessite un traitement long, à priori plus de 25 mn.
    Le soucis c'est que lorsqu'on lance le script PHP que ce soit un appel sur un navigateur (utilisation d'Apache+PHP) ou par ligne de commande (uniquement PHP), le script s'arrête au bout de 5 minutes exactement ( = 300 s) sans message d'erreur!

    Tous les paramètres possibles de réglage ont été modifiés: timeout, mémoire!
    Dans tous les php.ini:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    max_execution_time = 3000
    memory_limit = 512M
    Ainsi que dans httpd.conf, ce qui n'est pas nécessaire pour l'exécution en ligne de commande.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Timeout 3000
    KeepAlive On
    MaxKeepAliveRequests 100
    KeepAliveTimeout 15
    Est-ce que ce 300secondes est "hardcoded" dans les exécutables PHP?

    Y a-t-il une technique pour contourner une telle limite de durée d'exécution?

    Merci d'avance.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  2. #2
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Je ne comprends toujours pas les 5 minutes persistent mais j'ai trouvé une solution de contournement:
    c'est faire appel à la fonction set_time_limit() de PHP à chaque itération de mon programme qui nécessite beaucoup de temps!

    J'utilise même set_time_limit(0) qui veut dire qu'aucune limite n'est imposée!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $qryResult = $CIInstance->db->query(
    	"SELECT 
    		*
    	FROM 
    		entreprises
    	");
     
    foreach($qryResult->result() as $entreprise) {
    ......................	
    	set_time_limit(0);         
    }
    Maintenant, mon script ne s'interrompt plus, il est même sollicité pour plus de 40 minutes dans certains cas.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    Bon la durée limite d'exécution d'un script n'est pas "hardcoded" dans le PHP.
    Par contre, un script qui met 25 ou 40 minutes pour effectuer un traitement me parait absurde.
    Tu es sûr de ton coup ? Tu ne peux pas déporter ces traitement dans la base de données par exemple avec une procédure ou fonction stockée ?
    Dans tous les cas, dis-toi bien que ton approche est loin d'être la panacée.

    Allez poste voir ton script (celui qui pète un record)

  4. #4
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Oui je suis sûr de mon coup Il s'agit de l'analyse et de la ventilation d'un fichier Excel de 50000 lignes avec 104 colonnes vers une base de données MySql. On ne peut donc pas le déporter vers une procédure stockée.

    Je t'assure que cette durée est normale! Il ne s'agit pas d'un site web mais d'une application web.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut

    ah ça tombe bien, je me suis cogné l'analyse, la ventilation et l'import des données d'un fichier excel de 54 colonnes sur plus de 30 000 lignes. En PHP de le traitement prenait de 25 à 30 minutes, une fois le module codé en procédures stockées : 3 minutes 30. Donc tu as encore de l'espoir.

  6. #6
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    En PHP de le traitement prenait de 25 à 30 minutes, une fois le module codé en procédures stockées : 3 minutes 30. Donc tu as encore de l'espoir.
    Explique s'il te plaît! C'est de l'importation du fichier Excel vers la base de données dont tu parles?

    Pour l'instant, on fait l'analyse de la table une fois remplie encore côté PHP car c'est pratique pour nos tests "unitaires".
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

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

Discussions similaires

  1. [Mail] la fonction mail-temps limite d'un script
    Par fk04 dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2006, 13h45
  2. [phpMyAdmin] maximum execution time 300 seconds - Je n'en veux plus
    Par lodan dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 30/08/2006, 11h09
  3. gérer un temps limite
    Par gouigoui dans le forum Flash
    Réponses: 4
    Dernier message: 12/06/2006, 17h14
  4. [langage] temps au centieme de seconde
    Par sommerset dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2005, 11h08
  5. Réponses: 2
    Dernier message: 25/05/2004, 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