2012-04-02 30 views
0

我有一個從excel導入數據到數據庫的函數,我讓這個函數在服務器上運行,所以這個函數不需要再與客戶端交互,客戶端web瀏覽器只需要將excel文件上傳到服務器,之後,任務將在服務器上運行,所以如果瀏覽器關閉客戶端,該功能仍然運行在服務器上,我有這個問題是,當瀏覽器是隻要功能仍然處於活動狀態,瀏覽器將加載。如何讓瀏覽器不要等待服務器響應,以便在服務器上運行該進程時瀏覽器不會加載。請幫助我。PHP:如何運行與主進程分開的進程

回答

2

使用message queue可以將文件處理任務從Web服務器卸載到單獨運行的另一個守護程序。

+0

感謝您的回覆,您可以給我一些教程或示例如何使用此消息隊列? – user1290932 2012-04-02 07:52:14

0

您可以在命令行中使用進程的廉價且簡單的路徑exec,導致它後臺運行。但是,這給你很少的控制/狀態。

IMO的正確方法是將這些長時間運行的任務排隊到數據庫中,並將一些狀態信息與它們關聯起來。然後有一個獨立於您的Web服務器運行的專用進程,檢查數據庫的任務並執行它們,以成功/失敗狀態更新數據庫。

0

考慮使用一個隊列,如Mseven的隊列插件:

Msevens Queue Plugin

或者,如果你想要一個更基於守護工作,看看Beanstalkd。儘管如此,mseven的隊列插件是非常自我解釋的。遠離使用&分叉進程,它可能會失去控制。