我有一个很长的 PHP 脚本(可能持续 10 分钟,并且涉及大量 curl 调用),我可以将其作为 Cron 作业或直接运行。我正在使用 $wpdb 全局变量进行 SQL 调用,并且由于“WordPress 数据库错误 MySQL 服务器已消失”错误而不断丢失 mysql 数据库。
我已经通过将 wp-db.php 中的 wait_timeout 值更改为 3600 来尝试其他人的建议,但它仍然是一样的。还有什么我可以做的吗?
很明显,这意味着 MySQL 关闭了连接,要么是因为 - 你发送的查询大于max_allowed_packet
,要么 - 你花费的时间比wait_timeout
查询之间的时间长。
假设是超时,
将其放在$wpdb->query("set wait_timeout = 1200")
脚本的开头附近 - 这样可以节省您修改 WP 核心文件的时间。
如果还是不行,试试 MySQL 的 'ping' 功能。在wp-includes/wp-db.php
, find function query(
, 下一点是带有mysql_query
- 在上面的行, 添加行
mysql_ping( $dbh );
Ping 检查连接并尝试重新连接 - 我发现它在长时间运行的脚本中非常有用。
希望其中的某些东西(a)有意义并且(b)对您有用。为了其他阅读本文的人的利益,不要忘记升级 Wordpress 将覆盖您对核心文件所做的任何更改。
链接: http: //blog.webyog.com/2009/09/02/%E2%80%9Cmysql-server-has-gone-away%E2%80%9D-part-2-session-timeout/和http: //php.net/manual/en/function.mysql-ping.php