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 :

shell_exec et nohup


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 30
    Par défaut shell_exec et nohup
    Bonjour, aujourd'hui en envoyant la newsletter, je tombe sur un problème. Le script marche très bien d'habitude, mais aujourd'hui il semble ne pas s'être déroulé totalement.

    Ce n'est pas moi qui ai mis en place ce script, mais j'ai réussi à localiser d'où vient le problème.

    En fait il lance l'envoie des newsletter en background avec shell_exec et nohup.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shell_exec("cd ".$chemin." && nohup /usr/local/php5/bin/php newsletter_send.php ".intval($_GET["id_nl"])." >/dev/null 2>/dev/null &");
    Dans newsletter_send.php, au début il crée un fichier "lock" et il m'envoye un premier mail "debut du script. A la fin il supprimele fichier "lock" et m'envoie un deuxieme mail pour dire que le script termine.
    Cependant le fichier lock n'a pas été supprimé et je n'ai pas reçu le deuxieme mail de confirmation. Donc j'en déduit avec certitude que le script ne s'est pas terminé.

    Mes questions :
    Donc j'ai cherché sur google, j'ai vu que l'utilisation de nohup crée un nohup.out, mais je ne le trouve pas. Or j'aimerai bien savoir si une erreure a été générée.

    Deuxieme bémol, je ne suis pas familiarisé avec l'utilisation de nohup et je ne sais pas à quoi correspondent ">/dev/null" et "2>/dev/null".

    Et je voudrais aussi savoir si le processus s'est quand même fini et qu'il ne boucle pas infiniment..

    Merci de votre aide.

  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
    aucun intérêt de lancer un fichier PHP en commande via un script PHP ...
    un simple include suffit

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 30
    Par défaut
    Cela n'a rien a voir ! Le code contenu dans le fichier php met environ 30 minutes à s'executer donc le fait de le lancer en nohup permet de maintenir le script pendant toute son execution.

  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
    Citation Envoyé par im-souf Voir le message
    Cela n'a rien a voir ! Le code contenu dans le fichier php met environ 30 minutes à s'executer donc le fait de le lancer en nohup permet de maintenir le script pendant toute son execution.
    set_time_limit version bidouille enfaite ?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 30
    Par défaut
    Pas du tout, ici, ca permet de faire tourner un processus en background :

    If you want to start a php process that continues to run independently from apache (with a different parent pid) use nohub. Example:

    exec('nohup php process.php > process.out 2> process.err < /dev/null &');
    (http://fr2.php.net/manual/fr/function.exec.php)

  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 im-souf Voir le message
    Pas du tout, ici, ca permet de faire tourner un processus en background :

    (http://fr2.php.net/manual/fr/function.exec.php)
    je te deconseil de faire ça, utilise plutôt un cron pour faire ce genre de chose

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/03/2009, 23h12
  2. [Système] Retour d'un shell_exec
    Par Ryan Sheckler dans le forum Langage
    Réponses: 4
    Dernier message: 05/01/2007, 10h50
  3. [Système] shell_exec() en précisant l'utilisateur
    Par raphxyz dans le forum Langage
    Réponses: 1
    Dernier message: 31/08/2006, 14h11
  4. Réponses: 9
    Dernier message: 12/04/2006, 00h14
  5. Réponses: 3
    Dernier message: 01/03/2006, 12h11

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