在PHP中创建一个后台线程,无需用户交互即可继续运行

时间:2015-01-04 17:21:15

标签: php

我需要在php中创建一个带有后台线程的应用程序,后台线程包含一个定时器,可以在不受任何用户干扰的情况下分别更新数据库(通过从不同站点收集数据)。我的意思是:没有任何人访问该网站,线程必须不断更新数据库。这在PHP中是否可行,我怎么能意识到这一点?

3 个答案:

答案 0 :(得分:3)

我认为最好的方法是创建一个php脚本来执行任何操作,然后设置一个cron作业以在特定时间运行该脚本。

答案 1 :(得分:2)

有几种选择:

  • 操作系统中的计划任务,例如cron on * nix或Windows平台的Windows计划程序。
  • 永久运行的脚本。这对于PHP来说并不理想,因为内存使用有时不会被正确丢弃,并且脚本可能会耗尽内存。将脚本设置为die和respawn是很常见的,以防止这种情况发生。
  • 数据库服务器中的计划任务。 MySQL现在支持这一点。如果您的目的是运行数据库更新,那么这可能是一个不错的选择,如果您正在运行MySQL,并且您的版本是最近的。
  • 队列,其中一些处理在后台根据请求信号完成。参见Gearman,Resque和许多其他人。当用户在Web应用程序中请求某些内容时,它很有用,但该请求太长而无法立即执行。如果您需要永久运行的东西,那么这可能并不理想 - 我将其添加为完整性。

答案 2 :(得分:1)

让PHP进程运行很长时间并不是一个好主意,因为PHP不是一种内存效率非常高的语言,PHP进程占用大量内存。

最好使用职业经理人。看看Gearman