美好的一天。我需要这样做:从另一个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