login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Shell command uitvoeren via PHP (time out?)

Offline philipz - 23/04/2009 23:12
Avatar van philipzNieuw lid List,

Ik heb volgende PHP code:

  1. <?php
  2. $output = shell_exec('ruby //usr/bin/getipinfo.rb myserver myusername mypassword 10.10.10.1');
  3. echo "<pre>$output</pre>";
  4. ?>


Ik krijg hierbij geen resultaat  Als ik het shell commando "ruby ..." alleen uitvoer dan werkt het wel. Het duurt alleen een seconde of 10 voor ik een resultaat zie.
Is er een mogelijkheid dat PHP wacht tot er een output is voor hij zijn scherm genereert? Ik denk namelijk dat daar de fout zit...

Tx voor de tips!

3 antwoorden

Gesponsorde links
Offline Stijn - 23/04/2009 23:54 (laatste wijziging 23/04/2009 23:57)
Avatar van Stijn PHP expert Je zou het kunnen oplossen met een while lus eventueel.

  1. <?php
  2. while( $output .= shell_exec("ruby ...") ) {}
  3. echo $output;


Of je zou PHP.net: sleep kunnen gebruiken.

  1. <?php
  2. $output = shell_exec(...);
  3. sleep(10);//slaap 10 sec
  4. echo $output;


De derde manier ben ik niet 100% zekers of die gaat werken. Ik heb het in twee vormen geschreven. De dubbele quotes moet je behouden!

  1. <?php
  2. shell_exec("ruby //usr/bin/getipinfo.rb myserver myusername mypassword 10.10.10.1 > $output");
  3. echo $output;


  1. <?php
  2. shell_exec("ruby //usr/bin/getipinfo.rb myserver myusername mypassword 10.10.10.1 > ./output.txt");
  3. echo file_get_contents('./output.txt');
Offline philipz - 24/04/2009 08:53
Avatar van philipz Nieuw lid Hallo Stijn, thx voor de tips.
De eerste lijkt me de netste oplossing, maar geeft geen resultaat. Ik denk omdat de browser niet wacht om zijn pagina 'op te bouwen' totdat het commando is afgelopen...
De 2e; probleem is dat ik nooit op voorhand weet of een query 10 seconden of 1 minuut gaat duren...
Derde oplossing werkt niet, had ik ook al geprobeerd (blanco resultaat).
Bij de vierde krijg ik een error:
Warning: file_get_contents(./output.txt) [function.file-get-contents]: failed to open stream: No such file or directory in /usr/local/apache/htdocs/test.php on line 3
Hij probeert de file dus ook te lezen voor die gecreëerd is. De file 'output.txt' wordt ook niet aangemaakt als ik in de directory ga kijken?
Offline Richard - 24/04/2009 15:10
Avatar van Richard Crew algemeen //usr? Lijkt me toch gewoon /usr?

Je zou het ook met proc_open kunnen proberen, maar ik heb dit ook wel eens met PHP meegemaakt. Via de shell zelf werkt het prima, maar vanuit wil het op de een of andere manier niet..
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.218s