我有一个无限期运行的 PHP 脚本,每 5-10 秒执行一次特定任务(一个 do-while 循环,在每次迭代结束时检查数据库以确定它是否应该继续)。此任务包括 MySQL 数据库查询。处理数据库连接的最佳方法是什么?我应该:
a.) 每次迭代断开连接然后重新连接到数据库?
b.) 将连接超时设置为无限期?
c.) ping 数据库以确保我仍然处于连接状态,并在执行和查询之前根据需要重新连接?
d.) 还有别的吗?
编辑:澄清一下,脚本会向用户的 iPhone 发送推送通知。
最佳答案
关于您不能将 PHP 脚本作为守护进程运行的建议是荒谬的。我已经做过好几次了,而且效果很好。有 some example code to get you started . (需要 PEAR...如果您不是粉丝,请自己动手。)
现在,开始您的实际问题。如果您进行定期查询,您的 MySQL 连接不会超时。该超时用于空闲连接。绝对保持连接......没有理由断开和重新连接的开销。无论如何,在数据库出现故障时,由于您的脚本作为守护进程运行,您可能不想立即终止该进程。
我建议处理异常并重新连接。如果重新连接失败,请稍等片刻后再重试。在几次失败后(无论什么是适当的),您可能会在那时终止进程,因为某些东西可能已损坏,需要人工干预。
关于php - 无限期运行 PHP 脚本,MySQL 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12362724/