2011-03-13 64 views
2

大家好 我爲我的PHP項目使用了Zend框架。基本上我有幾個動作需要自動運行。我將使用cron工作來完成這個訣竅。 cron作業將運行一個php腳本文件。如何在PHP中安排任務? (存儲和運行技術)

直到現在一切似乎正常。現在我在我的數據庫中創建了一個表,並存儲了我需要在其中運行的操作。例如我需要執行以下操作:

1-創建一個示例文件(5次)。

2-上傳所有樣本文件(1次)。

3發送郵件(連續)。

所以我會在我的表存儲(創建一個樣本文件)控制器和行動,並設置其重複時間爲5,還設置了執行時間。對於其他兩個動作也是如此。

現在腳本文件運行的每一分鐘。在腳本文件中,我將選擇表中執行時間等於當前時間的所有記錄,然後運行它們。

現在做的事情只是清除該系統的實際工作,但我想一個更好的或改進的調度技術。在表格中存儲預定的動作聽起來像一個好主意,但我想知道是否有更好的方法?!

+0

他們多久更換一次,並通過什麼接口? – alex 2011-03-13 12:48:44

+0

好吧,我有一個用於控制計劃任務的UI屏幕。用戶只需從下拉列表中選擇他想添加到表格中的任務,然後指定任務的時間和重複。用戶可以查看錶中的所有任務,並可以修改或刪除其中的任何任務。任務本身被定義一次並加載到下拉列表中。然後用戶可以選擇任意數量的任務添加到數據庫中的cronjobs表中。由於我們仍處於開發階段,這些變化的頻率可能取決於業務需求。 – Songo 2011-03-13 20:58:39

回答

0

這對我來說似乎很好。您正在使用cron作業來運行PHP腳本,該腳本從數據庫表中選擇要執行的匹配記錄。只要數據庫中的數據規範化,存儲數據將是一種有效的方式。監視服務器上的負載,並根據需要進行調整。

+0

好吧,我正在尋找新的想法,因爲我被要求使cron作業系統更廣義化,以便它可以在任何應用程序或數據庫上工作。這就是爲什麼我認爲也許有更好的事情要做! – Songo 2011-03-13 21:04:21

0

我的aproach是有一個循環腳本,「清空」(工作集爲「已完成」)表。而且有更多不同時間的CRON填滿桌子。所以工作流程是這樣的:

minute: nothing to do 
minute: nothing to do 
hour: added export feed update 
minute: export feed update finished 
minute: nothing to do 
minute: nothing to do 
minute: nothing to do 
minute: nothing to do 
... 
minute: nothing to do 
five_hours: added "clear the cache" 
minute: clear cache finished 
minute: nothing to do 
minute: nothing to do 
...