Php 如何用kohana3orm处理数据库_异常
问题出在这里 有一个脚本在X个时间量(5到40分钟之间的未知量)后抛出以下错误:MySQL服务器已消失,Kohana将其变成数据库异常2006,因此一些信息未保存到数据库中 以下是我认为可行的方法Php 如何用kohana3orm处理数据库_异常,php,mysql,kohana,kohana-3,kohana-orm,Php,Mysql,Kohana,Kohana 3,Kohana Orm,问题出在这里 有一个脚本在X个时间量(5到40分钟之间的未知量)后抛出以下错误:MySQL服务器已消失,Kohana将其变成数据库异常2006,因此一些信息未保存到数据库中 以下是我认为可行的方法 class Model_Bar extends ORM { protected $_belongs_to = array( 'foo' => array() ); public function save(){ //Extends the save method try {
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的链接?
更多信息:
- 使用Kohana 3.0.8
- (我不知道如何在科哈纳试一试)
谢谢 这两者都有问题
- 已达到MYSQL配置的超时
- 超出数据包大小
- 数据包丢失
另一件事,如果您使用的是代理(如HAProxy),请检查该代理的超时情况。您能不能在长时间处理之后、保存之前重新连接?这不是ORM问题-这是应用程序设计问题。ORM不太相关。@Petah,这正是我想要做的。这就是我扩展save方法的原因。“问题是我找不到办法来做这件事。”汤姆,我不同意。这是发生在科哈纳ORM内部的事情,所以我相信这是相关的。但是,感谢您抽出时间:)好吧,您可以不同意您想要的一切-就像我与BS 2000(大型机)上的人员和.NET中的程序员进行的讨论一样-处理db级错误不是一个工具决策,而是一个应用程序决策。是否重试?你传播错误了吗?你是做什么的?独立于所使用的技术。例如,我这里有一个应用程序,其中唯一有效的答案是“在损坏发生之前立即停止应用程序”和“立即触发看门狗关闭打开的操作”。