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


Create a background thread in PHP that keeps running without user interaction

我需要在php中创建一个应用程序,其中包含一个计时器,该计时器分别更新数据库(通过从不同站点收集数据),而没有任何用户干扰。我的意思是:没有人访问该站点,线程必须不断更新数据库。这在PHP中可能吗,我如何实现这一点?

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

有几个选项:

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

长时间运行并不是一个好主意,因为 PHP 不是一种非常节省内存的语言,PHP 进程会消耗大量内存。

最好使用作业管理器。看看Gearman。