美好的一天。我需要這樣做:從另一個cron作業創建cron作業
- 創建cron作業(這裏沒問題)
- cron的執行PHP腳本
- 如果某些條件得到滿足,我需要用返回的日期創建另一個的cron由腳本
我有root權限和一切。操作系統是centOS 5.5(即使我認爲只要支持cron,我認爲它並不重要)
更具體地說,我需要一個執行php腳本的cron,從數據庫中獲取確切的時刻小時,分鐘,秒)何時執行另一個腳本。數據庫可以隨時更新。第一份工作每10分鐘執行一次。
美好的一天。我需要這樣做:從另一個cron作業創建cron作業
我有root權限和一切。操作系統是centOS 5.5(即使我認爲只要支持cron,我認爲它並不重要)
更具體地說,我需要一個執行php腳本的cron,從數據庫中獲取確切的時刻小時,分鐘,秒)何時執行另一個腳本。數據庫可以隨時更新。第一份工作每10分鐘執行一次。
您可以簡單地創建一個/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);
爲什麼不 '在' 使用?
如果我正確理解你,你正在使用一個cron腳本來檢查數據庫以執行一次性作業 - 執行作業的日期/時間在數據庫中,如果你有要執行的新的一次性作業,您想安排它們,但只執行一次。
at,batch,atq,atrm上的命令操縱Linux系統上的批處理隊列以執行一次性作業。使用'at'安排作業,它會運行,然後自動從'at'假脫機部分刪除。
「何時執行另一個腳本」 - 您是否需要其他腳本來執行一次?如果是這樣,請看[`at`](http://unixhelp.ed.ac.uk/CGI/man-cgi?at)。 – miku 2011-01-25 16:28:48