2010-09-09 4 views
7

J'ai toujours utilisé:Comment faire pour obtenir PID de la fonction PHP exec() dans Windows?

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

Mais j'utilise une machine virtuelle XP pour développer une application web et je ne sais pas comment obtenir le pid dans les fenêtres.

J'ai essayé sur un cmd:

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

Et il obtient le fichier exécuté, mais la sortie est "$!"

Comment puis-je obtenir le pid dans le $ var pid? (en utilisant php)

+0

J'ai voté pour déplacer ce question à serverfault.com depuis fondamentalement il peut être réduit à "Comment puis-je obtenir l'ID du processus sur la ligne de commande Windows". Peut-être que superuser.com va encore mieux? – Tomalak

Répondre

0

Vous devrez installer un extra extension, mais vous trouverez la solution située au Uniformserver's Wiki.

MISE À JOUR

Après quelques vous pouvez regarder dans la recherche tasklist qui coïncidente, vous pourrez peut-être utiliser avec la commande PHP exec pour obtenir ce que vous recherchez.

+0

Merci, de toute façon je pense que je vais juste installer un serveur sur une machine virtuelle Linux, je n'aime pas avoir un serveur web sur mon système d'exploitation principal et le seul que j'avais était sur la victoire. – jarkam

+1

Mise à jour, trouvé un programme qui est construit dans XP appelé 'tasklist' qui peut faire ce que vous voulez. –

7

J'utilise Pstools ce qui vous permet de créer un processus en arrière-plan et le capturer est 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]; 

Il est un peu hacky, mais il fait le travail

+0

Cela a fonctionné pour moi, mais il y avait une fenêtre de console supplémentaire qui a surgi pour une raison quelconque – relipse

Questions connexes