2016-11-21 68 views
4

在PHP後臺進程我在Windows Apache服務器後臺啓動的進程。執行和獲得的pid在Windows

的index.php以下這一點:

<?php 
$cmd = "C:/xampp/php/php.exe -f test.php"; 
pclose(popen("start /B ". $cmd, "r")); 
echo "OK"; 
?> 

test.php的以下這一點:

<?php 
sleep(5); 
file_put_contents("1.txt", date("Y-m-d H:i:s")); 
?> 

在那個時候,我想其中的pid php -f test.php。 當我開始的index.php,我可以在tasklist命令行的輸出看到新php.exe過程。 我該如何獲得這個後臺進程的pid。

謝謝。

+0

'$ PID = getmypid();'http://php.net/manual/en/function.getmypid.php聽從警告雖然:**警告進程ID不是唯一的,因此它們是一個弱熵源。我們建議不要依賴安全相關背景下的pid。** – icecub

+0

感謝您的幫助。但它返回httpd.exe的pid。我想獲得php.exe的pid。 –

+0

我不知道你到底在做什麼,但請記住這是一個CLI命令。這意味着如果你在瀏覽器中運行它將無法工作。 – icecub

回答

2

這將輸出任務後ProcessID一直使用wmic執行。然後,您可以將其存儲在會話或Cookie中以在頁面之間傳遞。

$cmd = 'wmic process call create "C:/xampp/php/php.exe -f /path/to/htdocs/test.php" | find "ProcessId"'; 

$handle = popen("start /B ". $cmd, "r"); 

$read = fread($handle, 200); //Read the output 

echo $read; //Store the info 

pclose($handle); //Close 

輸出

ProcessId = 1000 
+1

它工作正常,謝謝。 –