我有一个特殊的情况,我需要查询服务,以便在每天的特定时间获取n个用户的信息.问题是,如果我一下子完成所有这一切,它将使服务脱机/崩溃.
因此,为了克服这个问题,最好每10秒左右为x个用户运行一次,直到x = n然后停止.
我可以设置每天运行的1个cron脚本,另一个每10秒运行一次.例如,每日脚本会将DB中的值设置为1('开始查询')(默认值为0表示关闭),然后第二个脚本(每10秒运行一次)将此数据库值检查为1.如果设置为true,则迭代通过用户一次查询服务x用户并递增同一数据库表中的另一列以跟踪列表中的位置.
这个解决方案的问题(根据我的说法)是每10秒运行的第二个脚本每次都要查询数据库,以确定"开始查询"设置是否设置为1.这可能是处理器很重.有没有人有更好的解决方案?
注意:代码是用PHP编写的 - 由于服务器上php脚本的最大执行时间,无法使用睡眠
我可以在python中同样这样做,是否有最大限度执行cgi脚本?
为什么不只是每天运行一个cron脚本,并且每隔十秒调用另一个脚本,直到另一个脚本完成它为止(例如返回一个"不再需要处理"的值)?
或者一个每天运行的脚本,只是循环遍历用户块,每个X用户sleep()...
请记住,在使用CLI版本的PHP时,您不受执行时间限制的约束,并且您可以使用标准错误和输出流等与cron和其他shell脚本进行非常好的交互.
例如,对于第一种方法,您甚至不必将PHP用于"控制"脚本 - 一个非常简单的shell脚本,它只是循环,调用PHP脚本然后休眠,并检查"成功"返回value(由PHP脚本的exit()函数返回)可以.