2013-03-29 50 views
0

當用戶在我的PHP驅動的站點上註冊時,註冊腳本必須執行一些任務,因爲他們必須聯繫第三方服務器,所以需要更長的時間。PHP fork過多任務

我該如何將這些任務從主php腳本中分離出來,以便用戶立即看到結果?

+0

的可能重複[我怎樣才能運行在一個表單提交後後臺PHP腳本?](http://stackoverflow.com/questions/4626860/how-can-i-run- a-php-script-in-the-background-after-a-form-is-submit) – Brad

回答

2

您可以create a child process,或者只是在您的數據庫或一個小文件中創建一個隊列並運行一個cronjob。您也可以通過運行exec()來創建子進程。

exec('php /path/to/script.php'); 
+0

這有幾個問題 - 請參閱http://stackoverflow.com/questions/2212635/best-way-to-manage - 長運行的PHP腳本/ 2215188#2215188 – symcbean

0

不知道你想做什麼?

您可以執行以exec( 'PHP myScript.php')一個的extern PHP腳本;

但不是用戶如果想獲得該用戶的所有執行的腳本的結果沒有得到這個腳本的結果,因爲用戶只得到主要的PHP腳本的結果...

比你應該使用AJAX調用

0

假設你很高興地向用戶發送獨立的第三方請求的響應....

如果ignore_user_abort(),併發送一個標題(「連接:關閉「);並刷新輸出緩衝區,然後您可以通過register_shutdown_function()簡單地調用遠程站點。如果有多個遠程請求需要處理,則使用curl_multi函數並行運行它們。

0

如果不需要第三方請求顯示的頁面,你可以隨時通過做

了shell_exec('回聲在/ usr/bin中/ PHP -q myLongScript岔路口背景的PHP腳本。 php | at now');

而是派生一個新的實例每次有新用戶註冊的時間來處理第三方註冊的,您也可以考慮存儲在數據庫表中的信息,並通過PHP的cronjob腳本處理,在預定的時間間隔第三方註冊。

Run PHP through Cron job