脚本伪代码:
[php]
$flags = array(
PDO::ATTR_PERSISTENT => true,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
$db = init_db($flags);
while(true) {
// retrieve data from db
}
[/php]
脚本运行时间超过 MySQL 服务器中设置的
wait_timeout 时间后,收到错误:[sql gutter="false"]
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
[/sql]
修改脚本,初始化 DB 连接时,设置
PDO::ATTR_PERSISTENT = false,问题不再出现。在 PHP 的 bug 列表中找到类似的问题
Bug #37319 "MySQL server has gone away", with PDO::ATTR_PERSISTENT => true,从下面评论来看,似乎对于
PDO::ATTR_PERSISTENT = true 出现的问题还是没解决。
没有评论 :
发表评论