Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/10/2011, 12h14   #1
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : octobre 2011
Messages : 16
Points : 3
Points : 3
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 :
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.
im-souf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 13h00   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
aucun intérêt de lancer un fichier PHP en commande via un script PHP ...
un simple include suffit
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 14h12   #3
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : octobre 2011
Messages : 16
Points : 3
Points : 3
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.
im-souf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 15h33   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
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 ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 16h34   #5
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : octobre 2011
Messages : 16
Points : 3
Points : 3
Pas du tout, ici, ca permet de faire tourner un processus en background :

Citation:
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)
im-souf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 16h40   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 17h08   #7
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : octobre 2011
Messages : 16
Points : 3
Points : 3
Non, car ce n'est pas une tache récurente. De toute façon je travail sur un code déjà en place par mon prédécesseur et ca serait trop long de tout refaire !
Mais ce n'est pas ça mon problème, en fait je voulais surtout savoir si j'ai moyen de récuperer le fichier de log (nohup.out) lié a l'utilisation de cette commande.
im-souf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 17h21   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par im-souf Voir le message
Non, car ce n'est pas une tache récurente. De toute façon je travail sur un code déjà en place par mon prédécesseur et ca serait trop long de tout refaire !
Mais ce n'est pas ça mon problème, en fait je voulais surtout savoir si j'ai moyen de récuperer le fichier de log (nohup.out) lié a l'utilisation de cette commande.
fait juste :

__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 17h43   #9
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : octobre 2011
Messages : 16
Points : 3
Points : 3
Mais le script marche depuis longtemps, c'est juste ce matin il ne s'est pas terminé.
Donc si je suis bien ce que tu viens de me dire, dans le code que j'ai donné, le retour serai dans le dev/null. J'ai regardé le contenu de ce fichier, il est vide.
im-souf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 18h06   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par im-souf Voir le message
Mais le script marche depuis longtemps, c'est juste ce matin il ne s'est pas terminé.
Donc si je suis bien ce que tu viens de me dire, dans le code que j'ai donné, le retour serai dans le dev/null. J'ai regardé le contenu de ce fichier, il est vide.
/dev/null est toujours vide, c'est le but de ce fichier spécial
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h15.


 
 
 
 
Partenaires

Hébergement Web