每10秒运行一次cron作业n次然后停止

Mar*_*tin 2 php cron

我有一个特殊的情况,我需要查询服务,以便在每天的特定时间获取n个用户的信息.问题是,如果我一下子完成所有这一切,它将使服务脱机/崩溃.

因此,为了克服这个问题,最好每10秒左右为x个用户运行一次,直到x = n然后停止.

我可以设置每天运行的1个cron脚本,另一个每10秒运行一次.例如,每日脚本会将DB中的值设置为1('开始查询')(默认值为0表示关闭),然后第二个脚本(每10秒运行一次)将此数据库值检查为1.如果设置为true,则迭代通过用户一次查询服务x用户并递增同一数据库表中的另一列以跟踪列表中的位置.

这个解决方案的问题(根据我的说法)是每10秒运行的第二个脚本每次都要查询数据库,以确定"开始查询"设置是否设置为1.这可能是处理器很重.有没有人有更好的解决方案?

注意:代码是用PHP编写的 - 由于服务器上php脚本的最大执行时间,无法使用睡眠

我可以在python中同样这样做,是否有最大限度执行cgi脚本?

Mat*_*son 5

为什么不只是每天运行一个cron脚本,并且每隔十秒调用另一个脚本,直到另一个脚本完成它为止(例如返回一个"不再需要处理"的值)?

或者一个每天运行的脚本,只是循环遍历用户块,每个X用户sleep()...

请记住,在使用CLI版本的PHP时,您不受执行时间限制的约束,并且您可以使用标准错误和输出流等与cron和其他shell脚本进行非常好的交互.

例如,对于第一种方法,您甚至不必将PHP用于"控制"脚本 - 一个非常简单的shell脚本,它只是循环,调用PHP脚本然后休眠,并检查"成功"返回value(由PHP脚本的exit()函数返回)可以.

  • @Martin如果您使用的是[CLI版本的PHP](http://www.php.net/manual/en/features.commandline.introduction.php),则不应该遇到执行时间限制(参见[this]文章](http://www.macronimous.com/resources/Command_Line_Scripting_in_PHP.asp)进行了温和的介绍. (2认同)