天天看點

以背景方式運作php腳本,如何使用php exec(),運作另一個腳本并在背景運作,而不是等待腳本完成...

在花時間充分了解我自己的問題以及可以回答的方式之後,我已經準備好了我的解決方案。

感謝大家提出的建議,以及在提出問題時我的随意和毫無準備。

上述問題的答案取決于許多因素,例如您所指的作業系統,您正在運作的php子產品,甚至是您正在運作的Web伺服器。是以如果我不得不再次提出這個問題,我要做的第一件事就是陳述我的設定。

我想在兩種環境中實作這一點:

1.)運作Zend伺服器社群版的Windows 7。

2.)Linux(我的作業系統是Linux odysseus 2.6.32-5-xen-amd64#1 SMP Fri Sep 9 22:23:19 UTC 2011 x86_64)

為了做到這一點,我希望它在部署到Windows或Linux時以任何方式工作,是以我使用php來确定作業系統是什麼。

public function createInstanceAction()

{

//determines what operating system is Being used

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')

{

//This is a windows server

//call a seperate php process to run independently from the broswer action

pclose(popen("start php /path/to/script/script.php","r"));

}

else

{

//assuming its linux, but in fact it simply means its not windows

// to check for linux specifically use (strtoupper(substr(PHP_OS, 0, 3)) === 'LIN')

exec('php -f /path/to/file/script.php >/dev/null 2>&1 &');

}

//the browser will not hang around for this process to complete, and you can contimue with whatever actions you want.

//myscript log any out put so i can capture info as it runs

}簡而言之,一旦你了解了問題就提出問題。有很多方法可以實作上述目标,這隻是一個适用于我的開發和生産環境的解決方案。

謝謝大家的幫助。