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 :

Fonction system() ; Exécution trop longue -> timeout


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ben.IT
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 431
    Par défaut Fonction system() ; Exécution trop longue -> timeout
    Bonjour,
    je bosse sur une application chargée de gérer des fichiers sur un serveur.
    Pour cela, l'application en PHP propose une interface utilisateur qui lance des scripts shells sur le serveur avec la commande system :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     system("ma commande unix");
    Ces opérations peuvent durer longtemps et provoquent un timeout (la page arrête de charger) et les instructions suivantes ne sont pas traitées.

    Comment est ce que je peux faire pour palier ce problème ?

    merci d'avance.
    ben

  2. #2
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Modifie la valeur max_execution_time définie dans le php.ini.

  3. #3
    Membre éclairé Avatar de ben.IT
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 431
    Par défaut
    Je suis pas root et je voulais éviter de toucher aux valeur de la conf ?
    Est ce la seule solution ?

    J'ai également essayé :
    mais sans effet.

    merci

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Par défaut
    Si l’exécution du script ne retourne rien de particulier il est aussi possible de lancer la commande en arrière plan (avec "nohup"). Dans l'idéal on crée un fichier vide au lancement de la commande, et on le détruit à la fin de l’exécution, comme ça le script php peut savoir où il en est.

  5. #5
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Lu dans la doc PHP.

    Notez que set_time_limit() n'a pas d'effet lorsque PHP fonctionne en mode safe mode. Il n'y a pas d'autre solution que de changer de mode, ou de modifier la durée maximale d'exécution dans le php.ini.
    Récupères-tu la sortie de ton script?

    Il faudra peut-être revoir la manière dont tu lances ta commande pour ne pas attendre la fin de celle-ci pour finir le traitement php.
    Après en Ajax tu pourrais récupérer le statut et éventuellement la sortie voire les logs de ta commande.

  6. #6
    Membre éclairé Avatar de ben.IT
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 431
    Par défaut
    oui le serveur tourne en mode safe, donc effectivement set_time_limit ne sert à rien et en plus ça n'aurait pas fonctionné car j'utilise un appel externe avec system().

    Actuellement, le script shell, qui est executé via system(), produit un fichier de log, en fonction des valeurs contenues dans ce fichier de log, l'appli va effectuer des opérations en bas de données.

    J'aurais besoin d'attendre la fin de l’exécution du script.

  7. #7
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Citation Envoyé par ben.IT Voir le message
    en plus ça n'aurait pas fonctionné car j'utilise un appel externe avec system().
    Si tu avais pu utiliser set_time_limit, cela aurait fonctionné.

    Là tu es bloqué si tu ne veux pas modifier le php.ini, tu ne peux pas augmenter le timeout des scripts php.

    Il ne te reste plus qu'à faire comme je te l'ai expliqué dans mon post précédent.

Discussions similaires

  1. Exécution trop longue
    Par christouphh dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/04/2013, 17h53
  2. Réponses: 3
    Dernier message: 10/03/2007, 17h59
  3. Exécution trop longue d'une requête
    Par lodan dans le forum Requêtes
    Réponses: 5
    Dernier message: 13/10/2006, 15h34
  4. CGI exécution trop longue
    Par crochepatte dans le forum Web
    Réponses: 6
    Dernier message: 23/08/2006, 15h11
  5. CGI exécution trop longue
    Par crochepatte dans le forum Apache
    Réponses: 3
    Dernier message: 18/08/2006, 15h02

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