簡體   English   中英

以Web運行后台PHP腳本時出現超時問題

[英]Timeout issue when running background PHP script as web

我有一個PHP腳本,它會執行一些繁重的工作,因此嘗試使用以下代碼作為后台腳本啟動:

exec("script.php > /dev/null 2> /dev/null &");

怎么了:

  • 當我將上述代碼作為Web應用程序的一部分運行時,腳本將在大約一分鍾后退出。

  • 當我將代碼作為Web應用程序的一部分運行而沒有最終的“&”號時,該作業運行良好-但是exec()在加載下一頁之前等待腳本完成,因為用戶盯着無響應的頁面無法實現目的。

  • 當我以最終的&符號從控制台運行shell命令script.php > /dev/null 2> /dev/null &我本人時,該作業運行正常。

  • 當我從控制台作為Web運行shell命令時,作業大約在一分鍾后停止運行。

我嘗試將輸出傳遞到日志文件: script.php > /home/public/tmp/output.txt 2> /home/public/tmp/errors.txt & 輸出看起來很正常,我沒有收到任何錯誤。 該腳本只是停止工作。

基本規則似乎是:如果像Web或我一樣作為前台進程運行,它將完成。 如果作為Web作為后台進程運行,則大約一分鍾后它將停止工作。

我沒有將它作為cronjob運行,因為我的主機(NearlyFreeSpeech)每小時只能運行cronjobs一次,這比我希望讓用戶在工作僅花費幾分鍾的時間里等待的時間還多-當用戶使用時,它可能會觸發啟動它。

下標以set_time_limit(60 * 60 * 4);開頭set_time_limit(60 * 60 * 4); 因此,這不應該是PHP超時的問題。

set_time_limit 

不包括外殼執行時間。 http://php.net/manual/zh/function.set-time-limit.php

嘗試在該站點的注釋中使用代碼示例。

暫無
暫無

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

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