以下是问题
有一个脚本,在X时间后(未知数量在5到40分钟之间)抛出以下错误: MySQL服务器已经消失其中Kohana变成 Database_Exception 2006 < / strong>因此,某些信息不会保存到数据库中。
以下是我认为可行的方法
class Model_Bar extends ORM {
protected $_belongs_to = array(
'foo' => array()
);
public function save(){ //Extends the save method
try {
$result = parent::save(); //Try parent save
} catch (Database_Exception $e) { //Catch exception
if ($e->getCode() == 2006) { //If exception code == 2006 then DB has gone away
mysqli_ping(); //Try to refresh DB link
$result = parent::save(); //Try parent save again
} else { //Exception code != 2006
throw new Exception($e); //Throw new DB exception
}
}
return $result; // Return the result from parent::save()
}
}
问题:如何在Kohana的ORM中刷新数据库的链接?
更多信息:
谢谢!
答案 0 :(得分:0)
这是一个问题
如果您正在执行长插入,例如批量插入,如果没有为此配置数据库,则代码中的任何更改都不会产生任何影响。你可能会尝试重新配置你的MYSQL实例,然后排除MYSQL责任,然后你尝试修改你的代码(我怀疑是问题的根源)。重试保存不会有太大帮助,但要使数据库更加繁忙。
另一件事,如果您使用代理(如HAProxy),也要检查其超时。