在 Apache 上长时间运行 PHP 脚本,单独的 MySQL 服务器重新启动,无需手动刷新

在 Apache 上长时间运行 PHP 脚本,单独的 MySQL 服务器重新启动,无需手动刷新

我们目前正在进行迁移并遇到一个我们想知道如何正确解决的问题。

我们的设置是运行 Apache 2.4 的独立 Web 服务器和运行 MySQL 5.7 的数据库服务器。 我们有一个PHP 脚本大约需要一个小时才能完成。脚本的功能是从数据库服务器请求信息,对其进行解析,然后在服务器上插入新模式 - 在此过程中不会向客户端发送任何内容,只有在脚本完成时才会执行此操作。

我们已经在多个开发环境中尝试过这种方法,没有任何问题,但在生产设置(使用两台不同的物理服务器)中,我们遇到了问题。

该脚本运行了一段时间,大约 30 分钟(但不正好是 30 分钟),然后它重新启动而不向客户端发送响应。浏览器中的网络日志显示有一个请求,但 apache 访问日志显示每次重试都有一个请求。

该脚本无法运行多次,因此发生这种情况后我们不得不回滚并重新启动。

我们的解决方法是将迁移分成几个较小的批次,这样做效果很好,但我们有兴趣了解为什么会发生这种情况,所以我们在这里进行探讨。

有谁知道罪魁祸首是什么以及如何解决它?

我们发现 Apache 设置如下TimeoutKeepAliveTimeoutMaxKeepAliveRequests但我们不确定这是否是解决问题的途径,以及改变这一点是否会影响正常使用,甚至影响一些 cron 作业的运行。

脚本重新启动而客户端没有做出响应的原因可能是什么?应该做什么来确保脚本不会自行重新启动。

先感谢您:)

/托马斯

相关内容