加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 重试MySQL查询失败?

发布时间:2020-12-13 16:48:46 所属栏目:PHP教程 来源:网络整理
导读:背景 我在PHP`(5.2)中有一个PayPal IPN处理程序,它处理事务并在MySQL数据库中存储日期.该网站活动量低. 偶尔MySQL查询失败. (很少)我记录了所有内容,如果PayPal消息未能处理,我可以查看我的日志文件并重新发送PayPal消息. 想法/关注 但是我想知道我是否可以
背景

我在PHP`(5.2)中有一个PayPal IPN处理程序,它处理事务并在MySQL数据库中存储日期.该网站活动量低.

偶尔MySQL查询失败. (很少)我记录了所有内容,如果PayPal消息未能处理,我可以查看我的日志文件并重新发送PayPal消息.

想法/关注

但是我想知道我是否可以让这个过程更加健壮,而是让处理程序在放弃之前重新尝试mysql查询.

我可能想稍微等一下 – 不要紧接着多次查询多次查询.

我本来希望找到一些模式 – 搜索“php mysql query retry”之类的东西,但没有取得多大成功.

问题

>这是否有良好的实践指南?
>现有图书馆?
>在每个查询尝试之间是否有一个简单的循环和休眠,或者是否会产生不良的副作用?太原生了?

解决方法

php世界中良好的事务安全代码不是常态,但如果你查看java或.net代码示例,有很多例子.

我见过的最好的数据库代码将查询放在一个函数中,并在放弃和记录/排队之前立即重试约3次.希望这会照顾你的问题.

最佳做法是使用innodb表并将所有关键sql语句放在已提交或回滚的事务中.这样,即使一个特定查询失败,您的数据也会处于一致状态. (注意,如果你不小心,这也会加重锁定问题).

您不希望通过轮询进行长时间睡眠,因为这可能会挂起您的用户浏览器.他们需要立即回复以确认购买已通过.将作业放在具有cron作业或服务器守护程序的队列中是另一种方法,但不会给用户提供即时反馈,并且可能因此而过度杀伤.

如果立即重试不起作用,您会遇到其他类型的潜在锁定问题,这是您需要锻炼失败的原因.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读