大家好日子。我需要这样做:
我有root权限和一切。 OS是centOS 5.5(甚至认为只要支持crons,我认为它不重要)
更具体地说,我需要一个执行php脚本的cron,它可以从数据库(小时,分钟,秒)获取执行另一个脚本的确切时刻。数据库可以随时更新。第一份工作每10分钟执行一次。
答案 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'假脱机中删除。