2012-11-24 197 views
3

我如何可以編程設置一個cron作業,設置cron作業PHP

我們做了一個安裝程序爲我們的項目和安裝時間,我需要用PHP編程設置一個cron作業。

請注意,該項目可以在Linux/Windows的運行,

我怎樣才能做到這一點?還是比CRON JOB有更好的選擇。

我使用笨(基於PHP本身的解決方案總是受歡迎的,但是這將是非常有益的,如果它是通過CI)

cron作業包括

  1. 檢查特定表從郵件服務器
  2. 檢查一些文件的可用性刪除無效數據
  3. 插入值DB。

謝謝。

+0

Windows沒有附帶'cron'命令,所以我想你應該使用'Windows Task Scheduler':http://support.microsoft.com/kb/308569結帳這個線程http:// stackoverflow .com/questions/4421020/use-php-to-create-edit-and-delete-crontab-jobs – Cyclonecode

+0

爲什麼反對票? – Red

回答

2

cron是一個Linux作業調度程序。它不會在Windows上工作(除非你開始喜歡Cygwin和etecetera)。如果你必須支持它的全系統,跨越各種未知的系統和所有在PHP(不能安排事情是),你可以求助於這三個常用的解決方案中的任何一個:從地面控制

電話 (最好的資源,具體的時間,最優雅的解決方案)

  1. 有自己的機器上運行cron和ssh'ing其他機器上運行命令
  2. 在運行cron和accesing 自己的盒子「的祕密url的「 RO運行命令
  3. 有一個外部服務,如SetCronJob打電話給你「祕密網址的」

隨機招聘亞軍
(最容易實現的,適度的資源)

如果您需要做的事情不會直接影響用戶在您的網站上的行爲方式,並且它不是時間敏感的(只需要完成),您可以訴諸於使其運行統計概率。

// this will run on average once every 100 page views 
if(rand(1, 100)==1) runJobQueue(); 

最壞情況
(資源更難)

如果你的工作必須做到每隔一段時間,因爲它會直接afect用戶,它必須滿足一些時間表可以保存查詢並用最後一次運行時間戳更新數據庫並不斷檢查以確定是否必須重新運行作業

// if has passed 1 hour since last update... re-update it 
$result = mysql_query("SELECT `timestamp` FROM job_times WHERE whatever...") 
if(mysql_result($result, 2) >= (now() - 3600)) { 
    runJobQueue()