2010-09-09 65 views
7

我一直使用:如何从Windows中的函数exec()获取PID?

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

但是我使用的是XP虚拟机来开发一个web应用程序,我不知道如何获得PID的窗口。

我想这对一个cmd:

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

使它运行起来的文件,但输出为 “$!”

如何获得pid到var $ pid中? (使用php)

+0

我投来移动问题到serverfault.com,因为基本上它可以被折叠为“我如何在Windows命令行上获取进程ID”。也许superuser.com适合更好? – Tomalak 2010-09-09 18:59:24

回答

0

您将不得不安装extra extension,但发现解决方案位于Uniformserver's Wiki

UPDATE

经过一番搜索,你可能会考虑tasklist这巧合的是,您可以用PHP exec命令的使用,让你所追求的。

+0

谢谢,无论如何,我想我只会在linux虚拟盒子上设置一个服务器,我只是不喜欢在我的主操作系统上有一个网络服务器,而且我唯一的一个就是赢了。 – jarkam 2010-09-09 19:11:42

+1

更新,发现一个内置于xp的程序,称为'tasklist',它可以做你想做的事。 – 2010-09-09 19:15:00

7

我使用Pstools它允许你在后台创建一个过程,捕捉它的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]; 

这是一个小哈克,但它能够完成任务

+0

这对我有效,但有一个额外的控制台窗口出于某种原因弹出 – relipse 2014-05-27 19:07:57