多个时间要求严格的后台任务

时间:2011-12-23 02:09:53

标签: php

我是PHP新手,所以我需要一些指导,以解决以下问题最简单和/或最优雅的解决方案:

我正在开发一个项目,其中有一个包含多达500,000条记录的表,在用户指定的时间段内,必须启动一个后台任务,它将在服务器上调用命令行应用程序来完成魔术,问题是,每1分钟左右,如果需要做的话,我需要检查所有500,000条记录(并计算)。

正如标题所说,它是时间关键的,这意味着在用户期望的时间和执行任务的时间之间可以允许最多1分钟的延迟,当然延迟越少越好

到目前为止,我只能想到一个非常脏的选项,有一个在服务器上运行的简单实用程序应用程序,每分钟都会向服务器发出多个请求,例如:

  • 检查1到100,000之间的记录;
  • 检查100,000到200,000之间的记录;
  • 等。你明白了;

并且服务器基本上为每个100,000或更少的记录开始一个任务,但在我看来,必须有一个更快的方法,类似于facebook的通知。

其他信息:

  • 服务器是Windows 2008
  • 使用apache + php

编辑1

  • 用户平均每天有3个任务,间隔约为6-8小时
  • 超过一半的任务可以每天至少执行1次[!]

任何建议都非常感谢!

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用一直运行的持久性任务,并接收有关需要处理的记录的通知。然后它可以立即处理它们,或者如果它需要在某个时间处理,它可以睡觉直到达到该时间或另一个通知到达。

答案 1 :(得分:0)

我想我已经给了这个问题足够的时间,我将坚持一个实用程序应用程序(位于服务器上),它将只能从服务器的IP访问URL请求,这将为每个任务生成一个新线程如果需要同时执行多个任务,那么它实际上不是可扩展的,但现在必须要做。