簡體   English   中英

PHP:如何確保我的腳本可以長時間運行?

[英]PHP : How can I ensure my script is long running?

我正在開發一個簡單的應用程序,它將允許我將電子郵件從一台IMAP服務器遷移到另一台IMAP服務器。

盡管腳本可以正常工作-某些IMAP郵箱可能非常大,並且腳本運行了很長時間。 我知道我可以將腳本的時間限制設置為永不結束: set_time_limit(0)

但是,理想情況下,我希望能夠將其設置為啟動,以后再查看該網頁,看看它是否仍在運行或完成。 有沒有一種方法可以啟動一個過程,然后再返回查看同一過程?

當我問這樣的問題時,我不太確定要使用的術語是正確的,所以我希望我已經清楚了:)

編輯:我剛剛看過函數ignore_user_abort()但是我不確定這將如何讓我回到同一頁面,查看進程是否仍在運行,是否由於錯誤而停止,或者是否已經完成。

設置一個cron作業以運行您的腳本,並將其狀態記錄到某處的文本日志中。 然后,您要做的就是檢查您的日志。

在正常的HTTP請求中,PHP作為其他程序的子進程運行。 通常是Apache,但這完全取決於您的Web服務器。 問題是,即使使用PHP中的選項,Web服務器也總是有機會出於各種不同的原因而終止PHP進程。

擁有長期運行的PHP腳本的最佳解決方案是通過命令行界面(CLI) http://php.net/manual/zh-cn/features.commandline.php運行腳本

它在那里可以運行任意長時間。 我仍將使用set_time_limit(0)但請檢查上面的鏈接以獲取詳細信息。

另外,如果您無權訪問服務器上的命令行,則通常可以訪問某種任務計划程序(Linux中為CRON)。 這些通常通過執行命令來工作,就像在命令行上一樣,因此您可以設置任務以按需運行PHP腳本。

至於狀態更新。 您可以讓遷移代碼將狀態寫入數據庫或文本文件。 然后,創建第二個正常的PHP頁面,以顯示狀態更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM