recupérer sortie console en php

recupérer sortie console en php - PHP - Programmation

Marsh Posté le 29-05-2008 à 16:45:14    

Hello,

 

besoin d'aide pour un script php-cli.

 

Je fait tourner de nombreux cron et j'aimerai faire un script de vérification de l'exécution de ce dernier.

 

25 0 * * * /chemin/monscript.php | handleOutput.php

 

handleOutput.php doit juste vérifier que la sortie console ne contiens pas "error" ou "warning"

 

j'ai pensé maladroitement que le contenu serai disponible dans $_SERVER['argv'] mais il n'en est rien. Apres quelque recherche , il faut ouvrir le stdin/stderr.
J'ai donc dans mon handleOutput.php :

 
Code :
  1. #! /root/php -qC
  2. <?php
  3. chdir(dirname(__FILE__));
  4. $stds=array('stdin','stderr');
  5. $st=array();
  6. foreach($stds as $output){
  7. $handle = @fopen("php://$output", "r" );
  8. $st[$output]='';
  9. if ($handle) {
  10.  //while (!feof($handle)) {
  11.   $buffer = fgets($handle, 4096);
  12.   $st[$output]= $st[$output].$buffer;
  13.  //}
  14. fclose($handle);
  15. }
  16. }
  17. print_r($st);
  18. ?>
 

J'ai du commenter la boucle car elle semble être sans fin.

 

plusieurs questions:

 

- est ce la meilleurs solution pour faire ce que je souhaite ?
- comment éviter que l'exécution soit aussi lente ...

 

merci pour votre aide


Message édité par veryfree le 29-05-2008 à 16:46:42
Reply

Marsh Posté le 29-05-2008 à 16:45:14   

Reply

Marsh Posté le 29-05-2008 à 18:23:03    

est tu obliger de tout faire en php ?  
 
car si tu peux utiliser un peu de script shell ca te simplifira la vie, par exemple un truc comme ca :  
 
25 0 * * * /chemin/appel_monscript.php
 
et dans "/chemin/appel_monscript.php"


#!/bin/bash
 
if [ `/chemin/monscript.php` = "error" ]
then
  qqchose
else
  autre chose
fi


 
 
ce n'est qu'une idée, en effet pour ton cas il y a plein de solution


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 03-06-2008 à 19:23:02    

merci pour ton aide mais je preferere utiliser le php ( derrière il y aura des requete en BDD + des mails à envoyer etc )

Reply

Marsh Posté le 03-06-2008 à 21:48:36    

A quoi correspondraient tes error ou warning :??: Des erreurs du script php :??: Si oui pourquoi ne pas les  gérer tout simplement :??:

Reply

Marsh Posté le 03-06-2008 à 22:24:21    

Salut,
 
celle qui peuvent etre "catché" par php le sont.  
 
apres certaines erreurs ne peuvent pas etre géré par le script ( parse error   - tres rare bien sur - depassement de memoire, objet non compatible avec la version php qui tourne et j'en passe ) Je parle de la gestion d'une 15 en de site différents qui executent quotidiennement plus de 50 scripts ... ca deviens un peu ingerable :s
 
 
d'une facon générale, ce qui sortira de la console est souvent plus bavard que ce que me donnera l'appli.
 
Aujourd'hui l'alternative c'est de faire  
 
script1.sh > log.log
fichierPhpQuiLitLeLog.php ( et envois le mail si soucis )
 
je veux juste le faire en court circuitant l'etape "log"
 
 

Reply

Marsh Posté le 03-06-2008 à 22:43:48    

stderr est un flux de sortie,non ?  
 
essaye avec juste stdin  
 
et sinon, tu n'as rien dans $argc/$argv  quand tu lance ta commande ?


---------------

Reply

Marsh Posté le 04-06-2008 à 12:57:52    

et une commande avec > /home/user/templog.txt ?
(pour mettre la sortie dans /home/user/templog.pxp, après tu peux adepter l'uri et le nom du fichier) ...


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed