项目上有一些 php 进程需要定时扫数据库,比如每秒查询一次
现在遇到个问题,发现有些进程有时候"假死",进程还在,但是观察日志是没有继续运行了
初步判断是常驻进程和 mysql 的连接断了,比如服务器和 db 服务器网络波动等造成的
一般我们 php 查询数据库会在 new model 的时候新建连接(或是从 php-fpm 管理的连接池里获取),但是常驻进程持续持有这个连接,所以在这种断开情况下不会重新建立新的连接
1 php 检测连接状态有什么好的方案,现在知道的是 ping 或者 pdo->getAttribute(PDO::ATTR_CONNECTION_STATUS)
2 这种情况下一般如何处理 在检测后重新 new 一个?疑惑是改成不持有,每次检测前重新 new
怕进程运行时间过久,crontab 不能保持单进程运行,怕一时没执行完,每秒启一个进程"雪崩"
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.