[英]Curl alternative to Cron Job PHP
我目前正在使用以下php exec命令在服務器端加載URL,因為我需要一個不涉及cron作業的解決方案,這也是異步的,即一旦任務啟動,用戶就可以從頁面導航並且任務仍將執行:
exec("nohup curl ".$dbupdateurl." > /dev/null 2>&1 & echo $!");
這在大多數情況下工作正常,但是相當不可預測。 是否有更好/更可靠的方法來實現這一目標?
謝謝,
馬特
如果您使用的是PHP-FPM,則可以使用fastcgi_finish_request
:
此函數將所有響應數據刷新到客戶端並完成請求。 這允許執行耗時的任務而不會斷開與客戶端的連接。
這樣,您可以使用PHP的本機函數在用戶獲得響應后執行webrequest。 有關如何使用此函數的示例可以在如何使用fastcgi_finish_request()的示例中找到
如果您不使用PHP-FPM ,可以使用像Gearman這樣的JobQueue來完成原始請求之外的工作。 這可能是最可靠的方式,因為它是處理這類工作的專用系統。
另請注意, curl可以執行異步http請求 。 如果問題是您不想等待http響應,這可能比引入JobQueue更容易。
最后但並非最不重要的是,您可以分叉額外的PHP進程來完成工作。 請參閱向客戶端發送響應並執行后台進程 后,如何執行耗時的任務
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.