我有一个很长的PHP脚本(可能持续10分钟,涉及大量curl调用),我运行的时候或者是作为Cron job或者直接运行。我正在使用$ wpdb全局变量来进行SQL调用,并且我一直使用“WordPress数据库错误MySQL服务器已经消失”错误丢失了mysql数据库。继续在wordpress中丢失数据库
我已经尝试了别人的建议,将wp-db.php中的wait_timeout值更改为3600,但它仍然相同。还有什么我可以做的吗?
我有一个很长的PHP脚本(可能持续10分钟,涉及大量curl调用),我运行的时候或者是作为Cron job或者直接运行。我正在使用$ wpdb全局变量来进行SQL调用,并且我一直使用“WordPress数据库错误MySQL服务器已经消失”错误丢失了mysql数据库。继续在wordpress中丢失数据库
我已经尝试了别人的建议,将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
,发现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
你好,非常感谢你的回答。我做了所有这些,并且在那些长CRON作业期间,我仍然有与MySQL数据库丢失相同的问题 – 2013-02-11 20:24:48
从未有过这个问题我的猜测也将是你从PHP得到一个超时。如果超时不是问题,这可能会有所帮助。与你的数据库建立持续连接(http://php.net/manual/en/features.persistent-connections.php)。我从来没有尝试过,但也许它有帮助。 – 2013-02-08 22:52:36