例如,FastCGI服務器對PHP腳本強制執行時間限制,PHP腳本無法使用set_time_limit()
在PHP中進行更改。我相信IIS也這樣做。PHP:在服務器施加執行時間限制時對長時間運行的腳本進行編碼
我爲一個PHP應用程序編寫了一個導入腳本,該腳本在mod_php下運行良好,但在FastCGI(mod_fcgid)下失敗,因爲該腳本在數秒後終止。我還不知道在這種情況下檢測你的時間限制的方法,還沒有決定我怎麼去解決它。以小塊進行重定向看起來像是一團糟,但是怎麼樣?
在編寫長時間運行的任務(如導入或導出任務)時,您會使用哪些技術,其中個別PHP腳本可能會在某個秒數後由服務器終止?
請假設您正在創建一個可移植的腳本,因此您不一定知道PHP是否最終將在mod_php,FastCGI或IIS下運行,或者是否在服務器級別執行最大執行時間。這可能也會排除shell腳本等。
使用cron的+1。長時間運行的任務不應該使用web腳本運行 – 2010-05-14 03:24:40
我不明白如何推回php.ini中聲明的時間限制,你可以更具體嗎?謝謝 – Benoit 2010-05-14 07:00:22
@Benoit我指的是服務器(Apache,IIS等)或服務器模塊(FastCGI/fcgid)施加的時間限制。從命令行運行時,您不會有這些特定的限制,並且唯一的限制將是PHP本身控制的限制。從命令行運行的缺點是它不便於移植 - 您必須爲Windows服務器設置不同的設置,或者根據PHP可執行文件的路徑進行更改等。但仍然是一種選擇。 – thomasrutter 2010-05-14 07:03:49