php – MySQL查询每60秒重启一次?

前端之家收集整理的这篇文章主要介绍了php – MySQL查询每60秒重启一次?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个奇怪的问题.我正在针对 PHP中的一个非常大的表运行MySQL查询.查询时间超过一分钟,但这不是我的问题.看起来PHP每66秒重新发送一次查询.
show processlist;
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| Id     | User    | Host              | db       | Command | Time | State         | Info                                                   
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| 150018 | root    | localhost         | amrs     | Query   |   32 | Sending data  | /*DEREK*/select ctlno,count(*) AS count from (omitted)

几分钟后,我再次检查:

+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| Id     | User    | Host              | db       | Command | Time | State         | Info                                                   
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| 150018 | root    | localhost         | amrs     | Query   |  188 | Sending data  | /*DEREK*/select ctlno,count(*) AS count from (omitted)
| 150021 | root    | localhost         | amrs     | Query   |  122 | Sending data  | /*DEREK*/select ctlno,count(*) AS count from (omitted)
| 150023 | root    | localhost         | amrs     | Query   |   56 | Sending data  | /*DEREK*/select ctlno,count(*) AS count from (omitted)

我没有重新加载页面或任何东西.在脚本开头附近调用set_time_limit(0).令人讨厌的部分是,页面似乎与最近运行的页面相关联.因此,如果我杀了150018,没有什么不好的事情发生,但是如果我在生成另一个之前杀死了150023,那么该页面会出现“查询执行中断”错误. 150018最终将自行运行,但它没有任何好处,因为脚本/页面不会收到它.

有人有主意吗?

编辑:显示完整的进程列表给出以下内容(为简洁和机密性删除了一些行):

+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
| Id     | User    | Host              | db       | Command | Time  | State        | Info 
+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
| 147385 | root    | localhost:44560   | amrs     | Sleep   | 14021 |              | NULL
| 150248 | root    | localhost         | NULL     | Query   |     0 | NULL         | show full processlist
| 150251 | root    | localhost         | amrs     | Query   |     1 | statistics   | /*DEREK*/select ctlno,count(*) AS count from (snip)
+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
我之前已经看过几次类似的问题了,你的问题听起来和我以前在网站上工作时遇到的问题非常相似.

你去网站时是否要通过代理服务器?

我的网站发生的事情是,来自同一公司内某个特定用户查询是通过他们的代理服务器进行的,该代理服务器自己决定如果在60秒内没有收到响应,那么它只会发出再次请求Web请求,而不通知客户端浏览器发生了这种情况!

因此,对于某些长时间运行的查询需要花费一分钟来执行,我会看到查询开始相互复合,我最终会查看一个包含大量相同查询的进程列表,每个查询都相隔几乎相同正好60秒!

解决这个问题的方法是让客户绕过我们网站的代理服务器.

当客户端将其代理服务器升级到最新版本时,解决了此完全相同问题的第二个实例.

对不起,但我不记得在任何一种情况下使用的是什么代理服务器,就像几个月前一样,我从此睡过了: – /

原文链接:https://www.f2er.com/php/136044.html

猜你在找的PHP相关文章