2010-11-14 51 views

回答

2

在Windows命令行中,你有幾種選擇:

start /b /low program.exe 
start /b /high program.exe 
start /b /realtime program.exe 
start /b /normal program.exe 
start /b /abovenormal program.exe 
start /b /belownormal program.exe 
+0

嗯,我做了一個單獨的runphp.bat文件,當用鼠標點擊指向所有的* .php文件,以通過這個文件運行,所以不會有什麼驚喜,如果一個腳本對CPU或內存很重。這個文件的內容很簡單:start/b/belownormal php.exe%1 @echo off pause> nul – rsk82 2010-12-11 08:35:12

0

本身,在PHP中,有pcntl_setpriority()函數。但是,這只是Unix。

對於Windows;這個命令行程序可以讓你改變已經運行的進程的優先級: http://gilchrist.ca/jeff/SetPriority/index.html

你可以在你的PHP腳本中執行exec()來調用這個程序。

1

@stillstanding提供的答案是完全有效的。我只是想從我自己的實驗中添加一些細節。

如果您的腳本正在使用CPU的50%,則添加/low它不會使其消耗更少。唯一的區別是具有更高調度優先級的另一個進程出現並需要CPU。當CPU使用率達到99-100%時,您的PHP CLI腳本將受到限制。

換句話說,您需要爲需要它的進程安排更高的優先級,以便機器仍然可以響應。

start添加到直接使用exec()運行的命令中,可能會在使用路徑和參數時引發問題。另外我遇到的問題是啓動的進程被卡在0%的CPU使用率。

這裏是一個工作示例:

$cmd = 'start /b /low /d "C:\php\" php.exe -f ""C:\Data\www\script.php" foo="1" bar="text"'; 
pclose(popen($command, "r")); 
相關問題