2010-09-09 14 views
7

siempre he utilizado:¿Cómo obtener PID desde la función PHP exec() en Windows?

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

pero estoy usando una máquina virtual XP para desarrollar una aplicación web y no tengo ni idea de cómo obtener el PID en las ventanas.

yo probamos este en un cmd:

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

Y se pone el archivo se ejecuta, pero la salida es "$!"

¿Cómo puedo obtener el pid en el var $ pid? (usando php)

+0

que votaron para mover ese pregunta a serverfault.com ya que básicamente se puede contraer a "Cómo obtengo el ID del proceso en la línea de comandos de Windows". Tal vez superuser.com se ajusta aún mejor? – Tomalak

Respuesta

0

Tendrás que instalar extra extension, pero la solución se encontró en Uniformserver's Wiki.

ACTUALIZACIÓN

Después de buscar información se puede intentar tasklist cuales coincidentemente, es posible que pueda utilizar con el comando PHP exec para conseguir lo que está después.

+0

Gracias, de todos modos, creo que voy a configurar un servidor en una caja virtual de Linux, simplemente no me gusta tener un servidor web en mi sistema operativo principal y el único que tenía estaba en ganar. – jarkam

+1

Actualizado, encontró un programa que está integrado en xp llamado 'tasklist' que puede hacer lo que desee. –

7

estoy usando Pstools que le permite crear un proceso en segundo plano y captura es 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 un poco hacky, pero hace el trabajo

+0

Eso funcionó para mí, sin embargo, había una ventana extra de la consola que apareció por alguna razón – relipse