这里是问题
有一个脚本在X时间之后(未知数量在5到40分钟之间)抛出以下错误:MySQL服务器已经离开了,Kohana将其转换为Database_Exception 2006,因此有些信息没有保存到DB中。
这里是我认为可能有用的东西,
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中的DB的链接?
更多信息:
谢谢!
发布于 2012-12-28 09:19:47
这都是个问题
如果您正在执行长插入(就像批量插入一样),如果您的DB没有为此进行配置,那么代码中的任何更改都不会产生任何影响。您可以尝试重新配置MYSQL实例,然后排除MYSQL的指责,然后尝试修改代码(我怀疑这是问题的根源)。重新尝试保存不会有多大帮助,但却使DB更加繁忙。
另一件事是,如果您使用的是代理(如HAProxy),也要检查超时时间。
https://stackoverflow.com/questions/11333621
复制相似问题