2013-02-08 50 views
0

我有一个很长的PHP脚本(可能持续10分钟,涉及大量curl调用),我运行的时候或者是作为Cron job或者直接运行。我正在使用$ wpdb全局变量来进行SQL调用,并且我一直使用“WordPress数据库错误MySQL服务器已经消失”错误丢失了mysql数据库。继续在wordpress中丢失数据库

我已经尝试了别人的建议,将wp-db.php中的wait_timeout值更改为3600,但它仍然相同。还有什么我可以做的吗?

+1

从未有过这个问题我的猜测也将是你从PHP得到一个超时。如果超时不是问题,这可能会有所帮助。与你的数据库建立持续连接(http://php.net/manual/en/features.persistent-connections.php)。我从来没有尝试过,但也许它有帮助。 – 2013-02-08 22:52:36

回答

1

说明明显,这意味着MySQL的关闭连接,或者是因为 - 你比max_allowed_packet,或 发送查询更大的 - 你比查询之间wait_timeout需要较长的时间。

假设它是超时,

$wpdb->query("set wait_timeout = 1200")脚本附近开始 - 这可以节省您的修改WP核心文件。

如果仍然不起作用,请尝试MySQL的'ping'功能。在wp-includes/wp-db.php,发现function query(,并根据该一点与mysql_query行 - 上面,添加行

mysql_ping($dbh); 

平检查连接,并尝试重新连接 - 我发现它在长时间运行是非常有用的脚本。

希望这件事会(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

+0

你好,非常感谢你的回答。我做了所有这些,并且在那些长CRON作业期间,我仍然有与MySQL数据库丢失相同的问题 – 2013-02-11 20:24:48