我有一个很长的PHP脚本(大约持续10分钟,涉及大量curl调用),我可以将其作为Cron作业运行,也可以直接运行。我使用$wpdb全局变量进行SQL调用,并且不断丢失mysql数据库,并显示"WordPress数据库错误MySQL服务器已消失“错误。
我尝试了其他人的建议,将wp-db.php中的wait_timeout值更改为3600,但它仍然是一样的。还有什么我能做的吗?
发布于 2013-02-09 16:30:42
显而易见的是,这意味着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 );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
https://stackoverflow.com/questions/14782494
复制相似问题