2011-09-17 109 views
1

我很努力地找到一個問題的解決方案,用戶訪問page1.php,這個頁面包含另一個page2.php,這需要很多時間(〜5分鐘)來完成所有的計算,但是計算結果不需要顯示給用戶。所以,它不值得讓用戶等待其完成。PHP保持進程活着

我正在尋找一個解決方案,用戶應該訪問page1.php,並在一些必要的檢查列表後,它應該顯示消息給用戶他的請求處理已經開始。而在後端page2.php應該完成所有的工作,即使用戶應該關閉窗口。

回答

3

退房此鏈接How do I make an asynchronous GET request in PHP? ,如果你想獲得請求頁面上顯示的結果,使用的file_get_contents

+0

發出GET請求後,什麼保證過程將保持調用並完成所有工作,即使用戶關閉了頁面甚至是瀏覽器,因爲它會立即關閉句柄? –

+1

你可以查看http://us2.php.net/manual/en/features.connection-handling.php。試試ignore_user_abort() –

0

減負的實際計算,以一個獨立進程(cron作業,或自定義守護進程)並實施某種作業隊列(例如,使用數據庫)。因此,您的前端(PHP網站)會將數據添加到數據庫表中,然後定期檢查它(例如,通過閱讀「進度」列或其他內容);處理守護進程會在表中查看是否有新的作業,如果是,則開始處理它們,根據需要更新表。