2012-09-11 25 views
3

我有一个无限期运行的PHP脚本,每5-10秒执行一次特定任务(do-while循环,在每次迭代结束时检查数据库以确定它是否与应该继续)。这个任务包括MySQL数据库查询。处理数据库连接的最佳方式是什么?我应该:无限期运行PHP脚本,MySQL超时

a。)断开连接然后每次迭代重新连接到数据库?

b。)将连接超时设置为无限制?

c。) ping数据库以确保我仍然连接,并在执行和查询之前根据需要重新连接?

d。)还有其他吗?

编辑:为了澄清,该脚本发送推送通知给用户的iPhone。

+0

你在每次迭代中做什么?为什么不使用计划任务/ cron作业来连续执行脚本? – Josh

+0

旁注:我建议使用cron作业而不是while..do! b)不要这样做 – Wh1T3h4Ck5

+0

我建议你将PHP脚本包装在启动脚本中,并简单地让它在数据库连接错误中以受控方式死亡。自然,启动脚本应该重新启动它。 –

回答

1

建议您不能将PHP脚本作为守护进程运行,这很荒谬。我已经做了好几次了,而且效果很好。有some example code to get you started。 (需要PEAR ...如果你不是粉丝,请自行打造。)

现在,请到您的实际问题。如果你定期进行查询,你的MySQL连接不会超时。该超时适用于空闲连接。绝对保持联系......没有理由断开和重新连接的开销。无论如何,在数据库发生故障时,由于脚本作为守护进程运行,因此您可能不希望立即终止进程。

我建议处理异常并重新连接。如果重新连接失败,请重新尝试一段时间后再重新连接。经过一些失败(无论什么是合适的)后,您可能会在当时杀死这个进程,因为某些事情可能被破坏,需要人为干预。

+0

单词,谢谢布拉德! – James