0

我有一个很长的 PHP 脚本(可能持续 10 分钟,并且涉及大量 curl 调用),我可以将其作为 Cron 作业或直接运行。我正在使用 $wpdb 全局变量进行 SQL 调用,并且由于“WordPress 数据库错误 MySQL 服务器已消失”错误而不断丢失 mysql 数据库。

我已经通过将 wp-db.php 中的 wait_timeout 值更改为 3600 来尝试其他人的建议,但它仍然是一样的。还有什么我可以做的吗?

4

1 回答 1

1

很明显,这意味着 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

于 2013-02-09T08:30:41.623 回答