![在 Apache 上长时间运行 PHP 脚本,单独的 MySQL 服务器重新启动,无需手动刷新](https://linux22.com/image/760443/%E5%9C%A8%20Apache%20%E4%B8%8A%E9%95%BF%E6%97%B6%E9%97%B4%E8%BF%90%E8%A1%8C%20PHP%20%E8%84%9A%E6%9C%AC%EF%BC%8C%E5%8D%95%E7%8B%AC%E7%9A%84%20MySQL%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%EF%BC%8C%E6%97%A0%E9%9C%80%E6%89%8B%E5%8A%A8%E5%88%B7%E6%96%B0.png)
我们目前正在进行迁移并遇到一个我们想知道如何正确解决的问题。
我们的设置是运行 Apache 2.4 的独立 Web 服务器和运行 MySQL 5.7 的数据库服务器。 我们有一个PHP 脚本大约需要一个小时才能完成。脚本的功能是从数据库服务器请求信息,对其进行解析,然后在服务器上插入新模式 - 在此过程中不会向客户端发送任何内容,只有在脚本完成时才会执行此操作。
我们已经在多个开发环境中尝试过这种方法,没有任何问题,但在生产设置(使用两台不同的物理服务器)中,我们遇到了问题。
该脚本运行了一段时间,大约 30 分钟(但不正好是 30 分钟),然后它重新启动而不向客户端发送响应。浏览器中的网络日志显示有一个请求,但 apache 访问日志显示每次重试都有一个请求。
该脚本无法运行多次,因此发生这种情况后我们不得不回滚并重新启动。
我们的解决方法是将迁移分成几个较小的批次,这样做效果很好,但我们有兴趣了解为什么会发生这种情况,所以我们在这里进行探讨。
有谁知道罪魁祸首是什么以及如何解决它?
我们发现 Apache 设置如下Timeout
,KeepAliveTimeout
和MaxKeepAliveRequests
但我们不确定这是否是解决问题的途径,以及改变这一点是否会影响正常使用,甚至影响一些 cron 作业的运行。
脚本重新启动而客户端没有做出响应的原因可能是什么?应该做什么来确保脚本不会自行重新启动。
先感谢您:)
/托马斯