2010-09-09 3 views
7

Я всегда использовал:Как получить PID из функции PHP exec() в Windows?

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

Но я использую виртуальную машину XP для разработки веб-приложений, и я понятия не имею, как получить ФИД в окнах.

Я попробовал это на ЦМД:

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

И он получает файл выполняется, но вывод «$!»

Как я могу получить pid в var $ pid? (с использованием php)

+0

Я голосовал, чтобы переместить что вопрос на serverfault.com, поскольку в принципе он может быть свернут на «Как получить идентификатор процесса в командной строке Windows». Может быть, superuser.com подходит еще лучше? – Tomalak

ответ

0

Вам необходимо установить extra extension, но нашли это решение на Uniformserver's Wiki.

UPDATE

После некоторого поиска вы можете посмотреть в tasklist который совпадению, вы можете быть в состоянии использовать с командой PHP exec, чтобы получить то, что вы после этого.

+0

Спасибо, во всяком случае, я думаю, что я просто настрою сервер на виртуальной коробке Linux, мне просто не нравится иметь веб-сервер в моей основной ОС, и единственный, который у меня был, был на выигрыше. – jarkam

+1

Обновлено, найдена программа, встроенная в xp, называемая 'tasklist', которая может делать то, что вы хотите. –

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]; 

Это немного Hacky, но он получает работу

+0

Это сработало для меня, однако появилось дополнительное окно консоли, которое появилось по какой-то причине – relipse