从另一个 cron 作业创建 cron 作业
祝大家美好的一天。我需要这样做:
- 创建一个 cron 作业(这里没问题),
- 如果满足某些条件,cron 会执行一个 php 脚本
- 我需要使用脚本返回的日期创建另一个 cron
我具有 root 访问权限和一切。操作系统是centOS 5.5(即使我认为只要支持crons,它并不重要)
更具体地说,我需要一个执行php脚本的cron,该脚本从数据库获取准确的时间时刻(小时,分钟,秒)何时执行另一个脚本。数据库可以随时更新。第一个作业每 10 分钟执行一次。
Good day to all. I need to do this:
- create a cron job (no problem here)
- the cron executes a php script
- if some condition are met I need to create another cron using a date that is returned by the script
I have root access and everything. OS is centOS 5.5 (even thought I don't think it really matters as long as crons are supported)
To be more specific I need a cron that executes a php script that gets an exact moment of time from a database (hours, minutes, seconds) when to execute another script. The database can be updated at any moment. The first job is executed once every 10 minutes.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以简单地创建一个
/etc/cron.d/ generated
crontab 文件,您的脚本将在其中添加生成的条目。正如 @The MYYN 在他的评论中所建议的,
at
<如果您只想执行脚本一次, /a> 也可能是一个很好的解决方案。在 PHP 中,您可以像这样调用它:或者像这样:
You can simply create a
/etc/cron.d/generated
crontab file in which your script will add generated entries.As suggested by @The MYYN in his comment,
at
may be a good solution too, if you want to execute the script only once. In PHP you could invoke it like this:Or like this:
为什么不使用“在”?
如果我理解正确的话,您正在使用 cron 脚本来检查数据库以执行一次性作业 - 执行作业的日期/时间位于数据库中,并且您是否有新的一次性作业要执行的作业,您想要安排它们,但只执行一次。
命令 at、batch、atq、atrm 操作 Linux 系统上的批处理队列来执行一次性作业。使用“at”安排作业,它会运行,然后自动从“at”假脱机中删除。
Why not use 'at'?
If I'm understanding you correctly, you're using a cron script to check the database to execute one-shot jobs - the date/time when the job is to be executed is in the database, and if you have new one-shot jobs to execute, you want to schedule them, but only execute them once.
The commands at, batch, atq, atrm manipulate the batch queue on Linux systems to execute one-shot jobs. Schedule a job with 'at', it runs, then gets deleted from the 'at' spool automatically.