|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour
Je dois faire un traitement répétitif, c'est-à-dire lancer un script PHP avec un paramètre de date, à partir d'un script en Bourne Shell, répétitivement. S'il se passe une erreur à l'exécution du script PHP, le script Shell doit en être averti, et s'arrêter en donnant un message d'erreur ( ou autre chose, par exemple un code de retour spécifique ). Je sais que je peux déclencher facilement un script PHP situé sur un serveur web, à distance, avec la commande curl. Mais comment faire pour que le script PHP puisse transmettre des données ( en très faible quantité ) au script Shell ? Un script PHP peut fournir des données, soit par des instructions d'affichage telles que echo par exemple, soit donner un code de retour par la command exit. Le script PHP devrait pouvoir transmettre une date en ${an}${mois}${jour} , soit une chaîne de caractère de 6 chiffres, ou bien une autre chaîne de caractère ( "OK" si correct, rien sinon ). Comment transmettre ces deux types de données, au script Shell appelant ? Pour contourner ce problème, j'ai pensé à une autre solution: J'ai pensé à faire une boucle intégrée au script PHP appelé, qui se lancerait de nouveau lui-même à la fin de son exécution, avec la librairie Curl. Est-ce que vous pensez que ce serait faisable, compte tenu du fait que la commande curl, n'admet au plus que 50 redirections ? Dans ce cas de figure, chaque nouveau script appelé avec un nouveau paramètre de date, serait lancé avec une isntruction curl appartenant à au script précédent, qui se terminerait donc immédiatement. Est-ce que la limite de 50 redirections, s'applique encore dans ce cas ? Merci beaucoup de vos réponses. Bien à vous. Amicalement. Jean-François Ortolo -- Visitez mon site gratuit donnant des Statistiques et des Historiques Graphiques sur les Courses de Chevaux: http://www.ortolojf-courses.com |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Le 27/09/2007 12:50, Jean-Francois Ortolo a écrit :
> > Je dois faire un traitement répétitif, c'est-à-dire lancer un script > PHP avec un paramètre de date, à partir d'un script en Bourne Shell, > répétitivement. > > S'il se passe une erreur à l'exécution du script PHP, le script Shell > doit en être averti, et s'arrêter en donnant un message d'erreur ( ou > autre chose, par exemple un code de retour spécifique ). > > Je sais que je peux déclencher facilement un script PHP situé sur un > serveur web, à distance, avec la commande curl. Mais comment faire pour > que le script PHP puisse transmettre des données ( en très faible > quantité ) au script Shell ? La réponse tu l'as donnée toi-même : > Un script PHP peut fournir des données, soit par des instructions > d'affichage telles que echo par exemple, soit donner un code de retour > par la command exit. Je ne sais pas si on peut récupérer le code de retour de la commande exit, mais tu peux certainement récupérer tout ce qui est envoyé par echo, ainsi que le code de retour HTTP que tu peux transmettre par une instruction header(). Et si Curl ne permet pas de le faire simplement, ce qui m'étonnerait beaucoup, tu peux aussi essayer avec Wget. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen a écrit :
> Je ne sais pas si on peut récupérer le code de retour de la commande > exit, Le commentaire de Roumen Semov <http://fr2.php.net/exit> est instructif à ce sujet. Bien sûr, il faut savoir récupérer le **status** donné par un fils mort. <man bash> > mais tu peux certainement récupérer tout ce qui est envoyé par > echo, ainsi que le code de retour HTTP que tu peux transmettre par une > instruction header(). header ? Dans ce qui semble être une application CLI ? Une solution élégante serait d'utiliser une variable d'environnement, s'il y a besoin de fournir une information sous forme de chaine <http://fr2.php.net/manual/fr/reserved.variables.php#reserved.variables.environm ent>. Note au modérateur : désolé pour l'UTF. -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Jean-Francois Ortolo wrote:
> Je sais que je peux déclencher facilement un script PHP situé sur un > serveur web, à distance, avec la commande curl. Mais comment faire pour > que le script PHP puisse transmettre des données ( en très faible > quantité ) au script Shell ? > et pourquoi pas un script php en ligne de commande ? php -q script.php ca marche tres bien sur toute bonne machine unix. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Le 27/09/2007 15:06, Mickael Wolff a écrit :
> >> Je ne sais pas si on peut récupérer le code de retour de la commande >> exit, > > Le commentaire de Roumen Semov <http://fr2.php.net/exit> est > instructif à ce sujet. Bien sûr, il faut savoir récupérer le **status** > donné par un fils mort. <man bash> Sauf que le script PHP, en mourant, ne transmet pas son status dans la réponse HTTP transmise via Curl. >> mais tu peux certainement récupérer tout ce qui est envoyé par >> echo, ainsi que le code de retour HTTP que tu peux transmettre par une >> instruction header(). > > header ? Dans ce qui semble être une application CLI ? Si « CLI » veut dire « sur la même machine, par fork/exec », alors ça ne me semble pas du tout être le cas, bien au contraire : <cit.> Je sais que je peux déclencher facilement un script PHP situé sur un serveur web, à distance, avec la commande curl. Mais comment faire pour que le script PHP puisse transmettre des données ( en très faible quantité ) au script Shell ? </cit.> |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen a écrit :
> Sauf que le script PHP, en mourant, ne transmet pas son status dans la > réponse HTTP transmise via Curl. Ben non, il transmet au processus père. >> header ? Dans ce qui semble être une application CLI ? > > Si « CLI » veut dire « sur la même machine, Command Line Interface. Tu te souviens pas, ton prmier programme en C était en CLI :-D Non :-o ? > par fork/exec », alors ça ne > me semble pas du tout être le cas, bien au contraire : Ben si ![]() > <cit.> > Je sais que je peux déclencher facilement un script PHP situé sur un > serveur web, à distance, avec la commande curl. Mais comment faire pour > que le script PHP puisse transmettre des données ( en très faible > quantité ) au script Shell ? > </cit.> Oui, comment faire pour que le script PHP transmette le code retour et les donnes au shell déclenché par le Cron Mais c'est vrai que saquestion laisse trop lieu à interprétation. -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Bonjour
Je répond à toutes les réponses qui m'ont été faites. Non, ce n'est pas du traitement CLI, mais l'utilisation de la commande curl ( ou /usr/bin/curl , ou /usr/local/bin/curl , suivant le cas ), avec une url http en paramètre. A la rigueur, je n'ai pas besoin d'envoyer aucun paramètre au script PHP déclenché à distance. Par contre, j'ai absolument besoin de récupérer une chaîne de caractère en réponse, cette réponse donc ( d'après Monsieur Miakinen ), peut être envoyé par le script PHP, avec la commande echo lancée par le script PHP. Il faut bien voir, que cette commande curl ( je ne dispose pas de wget sur l'environnement cible ), est lancée à partir d'un script en Bourne Shell ( bash ), et que la chaîne de caractères qu'elle doit retourner ( par le script PHP ), doit faire l'objet d'un traitement automatique. Mais... Comment récupérer dans un script Shell, une chaîne de caractère, rendue par ce script PHP avec une commande echo ? C'est toute la question. Merci beaucoup de votre réponse. Bien à vous. Amicalement. Jean-François Ortolo -- Visitez mon site gratuit donnant des Statistiques et des Historiques Graphiques sur les Courses de Chevaux: http://www.ortolojf-courses.com |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
Le 27/09/2007 19:09, Mickael Wolff a écrit :
>> >> Si « CLI » veut dire « sur la même machine, > > Command Line Interface. Tu te souviens pas, ton prmier programme en C > était en CLI :-D Non :-o ? Pas seulement le premier. Le seul programme en C auquel j'ai contribué qui n'était pas lancé en ligne de commande était initialement développé par quelqu'un d'autre. > [...] comment faire pour que le script PHP transmette le code retour et > les donnes au shell déclenché par le Cron Mais c'est vrai que sa> question laisse trop lieu à interprétation. Personnellement j'ai lu « curl » dans la question et pas « cron ». |
|
![]() |
| Outils de la discussion | |
|
|