我有一个数据库在MySQL中有时间条目。有超过1000个时间条目。我想提取时间并准确运行一个PHP脚本,当时..连续运行PHP脚本
我试图运行一个PHP脚本不断检查时间,但我的服务器不允许运行脚本超过60秒。
编辑。我必须每秒检查一次数据库。有其他选择吗?
我有一个数据库在MySQL中有时间条目。有超过1000个时间条目。我想提取时间并准确运行一个PHP脚本,当时..连续运行PHP脚本
我试图运行一个PHP脚本不断检查时间,但我的服务器不允许运行脚本超过60秒。
编辑。我必须每秒检查一次数据库。有其他选择吗?
试试Unix的cron。
您需要一些外部服务来执行脚本。在Unix上,这将是cron。在Windows中,使用Task Scheduler。
你有没有想过把你的进程写成服务器守护进程。它会启动并永久运行在一个while循环中。每隔几分钟或无论如何,您都希望能够检查下一个x分钟的运行时间。您排队您的请求,并且每当您发现需要运行的脚本时,您就会启动它。我不认为cron是你想要的,因为你正试图在任意时间安排未来的事件......而且我确定这正是你现在用来每秒钟检查db的情况。
是的。我必须每秒检查一次数据库。 有没有其他解决方案。因为一次又一次的查询会变得非常麻烦。 – nicky
那么你只需每检查一次X分钟,就可以在下一个X分钟内运行它。例如: 从时间
您必须使用sleep(arg)
函数来暂停PHP脚本一段时间,然后继续。
sleep(50); //Pauses
myFunction(); //Runs after the pause
例如,这会将脚本暂停50秒。
只有当max_execution_time参数设置为一个非常高的值(我不确定绝对最大值是多少......),还有'set_time_limit()'函数和其他可能的变量时,该解决方案才能工作。例如,您希望脚本运行整整一个星期或一个月 - 例如,它不是一个有效的解决方案,但它可以在延迟很短的循环中执行,以缩短执行时间。 –
写PHP脚本从数据库中读取和条目添加到你的crontab,使在期望的时间
运行保持运行的进程的脚本是不是一个很好的解决方案,这不仅是因为你需要以确保它保持运行。想必你知道下一次事件何时会发生 - 所以使用'atd'来安排它 - 当触发脚本时也应该工作在何时以及如何安排下一个工作。
这确实意味着作业是链接的 - 并且失败会打破链条,atd的大多数实现的粒度也可能相当高。
您可能想要使用像Nagios这样更复杂的调度工具或像DJB的daemontools或Oracle的OPMN这样的过程监控类型方法。
C.
DJB的daemontools的是伟大的。显然,系统和/或Upstart,虽然Remnant扮演一个真正的wanker。
推荐的梨包 - system_daemon看起来不错。然而,笔者现在建议使用新的功能,这是现成的在Ubuntu:新贵
如何通过cron作业运行脚本? – jamieb
Cron作业是个好主意,但我也必须运行查询来检查数据库和当前时间,这将花费太多时间。有没有其他方法可以这样做。 – nicky
您可以使用set_time_limit(0);让你的php脚本永远运行,但是大约1天后你的脚本将会使用超过1GB的内存。 PHP的内存管理器是非常原始的,如果你想长时间运行1个进程,你将不得不使用java或编写一些非常肛门的C++。 – rook