从另一个cron工作创建cron工作

时间:2011-01-25 16:24:39

标签: php linux cron jobs

大家好日子。我需要这样做:

  • 创建一个cron作业(这里没问题)
  • cron执行php脚本
  • 如果满足某些条件,我需要使用脚本返回的日期
  • 创建另一个cron

我有root权限和一切。 OS是centOS 5.5(甚至认为只要支持crons,我认为它不重要)

更具体地说,我需要一个执行php脚本的cron,它可以从数据库(小时,分钟,秒)获取执行另一个脚本的确切时刻。数据库可以随时更新。第一份工作每10分钟执行一次。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

为什么不使用'at'?

如果我正确理解你,你正在使用cron脚本检查数据库以执行一次性作业 - 作业执行的日期/时间是在数据库中,如果你有新的要执行的一次性作业,你想安排它们,但只执行一次。

命令at,batch,atq,atrm操纵Linux系统上的批处理队列以执行一次性作业。使用'at'安排作业,然后运行,然后自动从'at'假脱机中删除。