2010-09-09 7 views
7

Ich habe immer verwendet:Wie bekomme ich PID von der PHP-Funktion exec() in Windows?

$pid = exec("/usr/local/bin/php file.php $args > /dev/null & echo \$!"); 

Aber ich bin mit einer XP virtuellen Maschine ein Web-App zu entwickeln, und ich habe keine Ahnung, wie die pid in den Fenstern zu bekommen.

Ich habe versucht, dies auf einem cmd:

C:\\wamp\\bin\\php\\php5.2.9-2\\php.exe "file.php args" > NUL & echo $! 

Und es wird die Datei ausgeführt wird, aber die Ausgabe ist "$!"

Wie kann ich die PID in die var $ pid bekommen? (mit PHP)

+0

Ich habe zu bewegen, dass Frage zu serverfault.com, da es im Grunde zu "Wie bekomme ich die Prozess-ID in der Windows-Befehlszeile" reduziert werden kann. Vielleicht passt superuser.com noch besser? – Tomalak

Antwort

0

Sie müssen eine extra extension installieren, aber die Lösung gefunden bei Uniformserver's Wiki finden.

UPDATE

Nach einigem Suchen Sie in tasklist aussehen könnte, die zufälligerweise, Sie mit dem PHP exec Befehl zu verwenden, in der Lage sein zu bekommen, was Sie nach.

+0

Danke, jedenfalls denke ich, ich werde nur einen Server auf einer virtuellen Linux-Box einrichten, ich mag es einfach nicht, einen Webserver auf meinem Hauptbetriebssystem zu haben und der einzige, den ich hatte, war auf Sieg. – jarkam

+1

Aktualisiert, fand ein Programm, das in XP namens 'tasklist' eingebaut ist, das tun kann, was Sie wollen. –

7

ich Pstools bin mit dem Sie einen Prozess im Hintergrund erstellen kann und erfassen, es ist pid:

// use psexec to start in background, pipe stderr to stdout to capture pid 
exec("psexec -d $command 2>&1", $output); 
// capture pid on the 6th line 
preg_match('/ID (\d+)/', $output[5], $matches); 
$pid = $matches[1]; 

Es ist ein wenig hacky, aber es wird die ausgeführte Arbeit

+0

Das funktionierte für mich, aber es gab ein zusätzliches Konsolenfenster, das aus irgendeinem Grund auftauchte – relipse

Verwandte Themen