php – 重试MySQL查询失败?
背景
我在PHP`(5.2)中有一个PayPal IPN处理程序,它处理事务并在MySQL数据库中存储日期.该网站活动量低. 偶尔MySQL查询失败. (很少)我记录了所有内容,如果PayPal消息未能处理,我可以查看我的日志文件并重新发送PayPal消息. 想法/关注 但是我想知道我是否可以让这个过程更加健壮,而是让处理程序在放弃之前重新尝试mysql查询. 我可能想稍微等一下 – 不要紧接着多次查询多次查询. 我本来希望找到一些模式 – 搜索“php mysql query retry”之类的东西,但没有取得多大成功. 问题 >这是否有良好的实践指南? 解决方法
php世界中良好的事务安全代码不是常态,但如果你查看java或.net代码示例,有很多例子.
我见过的最好的数据库代码将查询放在一个函数中,并在放弃和记录/排队之前立即重试约3次.希望这会照顾你的问题. 最佳做法是使用innodb表并将所有关键sql语句放在已提交或回滚的事务中.这样,即使一个特定查询失败,您的数据也会处于一致状态. (注意,如果你不小心,这也会加重锁定问题). 您不希望通过轮询进行长时间睡眠,因为这可能会挂起您的用户浏览器.他们需要立即回复以确认购买已通过.将作业放在具有cron作业或服务器守护程序的队列中是另一种方法,但不会给用户提供即时反馈,并且可能因此而过度杀伤. 如果立即重试不起作用,您会遇到其他类型的潜在锁定问题,这是您需要锻炼失败的原因. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |