2011-01-25 168 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'假脱机部分删除。