2010-09-09 12 views
7

Ho sempre usato:Come ottenere PID dalla funzione PHP exec() in Windows?

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

Ma io sto usando una macchina virtuale XP per sviluppare una web app e non ho idea di come ottenere il pid in finestre.

ho provato questo su un cmd:

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

e si ottiene il file eseguito, ma l'uscita è "$!"

Come posso ottenere il pid nel var $ pid? (utilizzando php)

+0

ho votato a muoversi che domanda a serverfault.com poiché in pratica può essere compresso in "Come ottengo l'ID di processo sulla riga di comando di Windows". Forse superuser.com si adatta ancora meglio? – Tomalak

risposta

0

Sarà necessario installare un extra extension, ma la soluzione trovata è Uniformserver's Wiki.

UPDATE

Dopo qualche ricerca si potrebbe guardare in tasklist che casualmente, si può essere in grado di utilizzare con il comando PHP exec per ottenere ciò che si sta dopo.

+0

Grazie, comunque, penso che avrò appena installato un server su una macchina virtuale Linux, non mi piace avere un server web sul mio sistema operativo principale e l'unico che ho avuto è stato vincere. – jarkam

+1

Aggiornato, trovato un programma che è incorporato in xp chiamato 'tasklist' che può fare ciò che vuoi. –

7

sto usando Pstools, che permette di creare un processo in background e catturare è 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]; 

E 'un po' hacky, ma ottiene il lavoro fatto

+0

Questo ha funzionato per me, tuttavia c'era una finestra della console in più che è comparsa per qualche motivo – relipse

Problemi correlati