簡體   English   中英

沒有cron的幫助,如何在PHP中創建調度程序

[英]How can I make a scheduler in PHP without the help of cron

如何在不編寫cron腳本的情況下用PHP制作調度程序? 有沒有標准的解決方案?

功能[例如]:剩余時間在24小時b4剩余時間發送給所有訂戶。

標准解決方案是在類似Unix的操作系統上使用cron ,在Windows上使用Scheduled Tasks。

如果您不想使用cron ,我想您可以嘗試使用at來組裝一些東西。 但它是很難想象的情況下cron是一個問題,但at為A-OK。

我看到的解決方案是一個循環(一段時間)或一個sleep(3600*24);

通過javascript在每個設置的時間間隔內通過發送ajax調用執行它

在着手實施之前,請先閱讀我的最終意見。


Cron確實是安排事情的最佳方法。 它簡單,有效且廣泛可用。 話雖如此,如果cron不可用或您絕對不想使用它,則對非cron(運行在傳統Web服務器上的Apache / PHP偽cron)的兩種通用方法如下。

檢查使用可加載資源
在每個網頁上的某個位置嵌入圖像/腳本/樣式表/ 其他 圖片可能是瀏覽器最好的支持(如果關閉了javascript,則不能保證瀏覽器甚至會加載.js源文件)。 此頁面會將標頭和空白數據發送回瀏覽器(1x1清晰的.gif很好-可以看fpassthru)

從PHP手冊筆記

<?php
header("Content-Length: 0");
header("Connection: close");
flush();

// browser should be disconnected at this point
// and you can do your "cron" work here
?>

檢查每頁加載
對於您要自動化的每個任務,您將創建某種可調用的API(靜態OOP,函數調用)。 每個請求上,您都要檢查是否有任何工作要做。 這與上面的類似,只不過您沒有為腳本使用單獨的URL。 這可能意味着在執行工作時頁面需要花費很長時間加載。

這將涉及在記錄任務上次運行時間的任務表上對數據庫的選擇查詢,或者直接在所涉及的數據上(在您的示例中,可能在預訂表上)直接對數據庫進行選擇查詢。

最終意見
如果可能的話,您真的不應該為此重新發明輪子。 Cron的設置非常容易
但是,即使您認為cron設置起來容易,也要考慮這一點:對於站點上的每個頁面加載,您都將承擔檢查所需做的工作的開銷。 另一方面,True cron將按照您設置的時間表(每小時等)執行命令行PHP,這意味着您的服務器運行任務檢查代碼的頻率降低了。

沒有真正的 cron的最大潛在問題

您冒着網站訪問量不足以實際獲得足夠頻繁發生更新的風險。

創建一個cronjob表。 在其中保留cron工作的日期。 如果今天的日期等於creonjob表中的日期,則保持條件。 然后要求執行一個方法。 像CRON工作一樣運作良好。

暫無
暫無

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

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