Cron任务和随机时间,在给定的小时内。

142

我需要有能力在每天完全不同的时间运行一个 PHP 脚本20次。同时,我只希望它在早上9点到晚上11点之间运行。

我熟悉在 Linux 中创建 Cron 作业的方法。


3
这个问题表述不是很清楚。最终你想在上午9点到11点之间在时间轴上分配20个点。但是是否存在最小时间差的限制?在上午9点到10:30之间什么都不做是否可接受?唯一可行的方法似乎是Klaus的想法:在09:00选择你的20个时间,这样可以满足任何可能存在的限制,然后使用“at”安排事情。 - David Tonhofer
13个回答

2

创建一个每天重写crontab的脚本如何?

  1. 读取当前cron(A)
  2. 选择随机时间(B)
  3. 重写以前的cron(A),添加新的随机cron(B)
  4. 确保在第一次运行此脚本时添加到cron中。

2
请勿通过将评论发布为答案来规避声誉系统。不过,您的“评论”看起来足够好,可以作为一个“答案”。我建议删除“_我没有声望添加评论,但是_”。 - Ted Lyngmo
1
我刚刚审查了这个答案,错过了你在结尾处提出问题的部分(我的工作有些粗糙)。不要在回答中提问。对于你所提出的问题,请发布自己的问题。我将你的半问题转化为可以作为答案的内容。 - Ted Lyngmo
1
明白了!谢谢。下次我会更加小心,没有恶意的意图。 - mellofellow
2
我相信你没有恶意,也不需要过于小心。你提出了一个可能的解决方案,只是在最后有些失误。没关系! - Ted Lyngmo

0

我曾经遇到过同样的问题,对我来说最好的解决方案是在服务器端创建一个计划任务(通过编程语言非常简单),用两列填充数据库表:run_time和status(new | processed)。因此,我的cron每分钟运行一次,并查找需要完成的作业(状态=新且运行时间<=现在())。

非常简单,而且有一个巨大的优点:在这种情况下,我可以为其创建一个界面并查看发生了什么...


-1

对于那些通过谷歌搜索到这里的人:

如果你正在使用anacron(Ubuntu桌面和笔记本电脑),那么你可以进行编辑。

/etc/anacrontab

并添加

RANDOM_DELAY=XX 

这里的XX表示你需要延迟基础作业的分钟数。

Anacron类似于cron,但它并不期望你的计算机24x7开机(例如我们的笔记本电脑),如果系统宕机,则会运行错过的脚本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接