2009-08-24 23 views
1

這種情況。在test.php中,我有一個函數dotask(a,b,c,d);如何使test.php繼續其餘的編碼而不等待函數完成任務?

該功能需要做2-4分鐘才能完成的任務。 任務包括插入新記錄到數據庫,捲曲調用其他網址做任務等

不過,我想test.php的到: 只要確保dotask(A,B,C,d)被調用,無需等到任務完成後才返回並繼續處理底層的剩餘代碼。

原因:test.php是一個感謝頁面。我不能指望用戶等待幾分鐘才能完成任務。因爲我需要在該頁面向用戶顯示感謝信息等。

我能做些什麼?

回答

0

我看到了一些解決方案,這裏需要你傳遞你想要運行的頁面,例如: BackgroundProcess :: fork('process_user.php');

但是我的情況是在test.php的,我有dotask(A,B,C,d) 我需要的參數傳遞從這個網站繼續工作。

所以我應該只是通過這個幾個參數到一個新的DBTABLE呼叫pendingprocess,然後在process_user.php,我從數據庫中讀取並繼續任務呢?

我不能嵌入參數爲taskpage.php吧...

另一種解決方案通過參數傳遞給process_user.php執行我能想到的是在thankyou.php我做了身體的onload Ajax調用任務。任何人都可以建議這是否是一個好方法? 用戶在瀏覽器中單擊「停止」時,該過程是否會停止執行?如果他們去刷新瀏覽器會怎麼樣。

+0

是的,可以使用任何類型的額外信息將數據庫中的任務排隊。您也可以寫入文本文件。做任何看起來最合適的方法來存儲信息,以供其他進程使用。 – deceze 2009-08-24 04:26:23

相關問題