2011-01-25 52 views
0

美好的一天。我需要這樣做:從另一個cron作業創建cron作業

  • 創建cron作業(這裏沒問題)
  • cron的執行PHP腳本
  • 如果某些條件得到滿足,我需要用返回的日期創建另一個的cron由腳本

我有root權限和一切。操作系統是centOS 5.5(即使我認爲只要支持cron,我認爲它並不重要)

更具體地說,我需要一個執行php腳本的cron,從數據庫中獲取確切的時刻小時,分鐘,秒)何時執行另一個腳本。數據庫可以隨時更新。第一份工作每10分鐘執行一次。

+2

「何時執行另一個腳本」 - 您是否需要其他腳本來執行一次?如果是這樣,請看[`at`](http://unixhelp.ed.ac.uk/CGI/man-cgi?at)。 – miku 2011-01-25 16:28:48

回答

1

您可以簡單地創建一個/etc/cron.d/generated crontab文件,其中您的腳本將添加生成的條目。

file_put_contents('/etc/cron.d/generated', ' ... entry contents ...', FILE_APPEND'); 

正如在他的評論中所建議的@The MYYN,at可能是一個很好的解決方案也是如此,如果你想一次執行腳本。在PHP中,你可以調用它是這樣的:

system(sprintf('echo %s|at %s', 
    escapeshellarg($command), 
    escapeshellarg(date('H:i d.m.y', $timestamp)) 
); 

或者這樣:

$fd = popen(sprintf('at %s', escapeshellarg(date('H:i d.m.y', $timestamp))), 'w'); 
fwrite($fd, $command); 
pclose($fd); 
0

爲什麼不 '在' 使用?

如果我正確理解你,你正在使用一個cron腳本來檢查數據庫以執行一次性作業 - 執行作業的日期/時間在數據庫中,如果你有要執行的新的一次性作業,您想安排它們,但只執行一次。

at,batch,atq,atrm上的命令操縱Linux系統上的批處理隊列以執行一次性作業。使用'at'安排作業,它會運行,然後自動從'at'假脫機部分刪除。