【发布时间】:2012-07-04 17:56:27
【问题描述】:
问题来了
有一个脚本在 X 时间(5 到 40 分钟之间的未知时间)后抛出以下错误:MySQL 服务器已消失,Kohana 变成 Database_Exception 2006因此有些信息没有保存到数据库中。
这是我认为可行的方法
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
- Possible solution(不知道在Kohana怎么试)
谢谢!
【问题讨论】:
-
您能否在漫长的过程之后和保存之前重新连接?
-
不是 ORM 问题 - 这是一个应用程序设计问题。 ORM 并不真正相关。
-
@Petah,这正是我想做的。这就是我扩展保存方法的原因。问题是我找不到办法。
-
@TomTom,我不同意。这是在 Kohana 的 ORM 内部发生的事情,所以我相信它是相关的。但感谢您抽出宝贵时间:)
-
好吧,你可以不同意所有你想要的 - 我与 BS 2000(大型机)上的人以及 .NET 中的程序员进行的讨论相同 - 处理 db 级别错误不是工具决定,而是申请决定。你重试吗?你传播错误吗?你做什么工作?独立于所使用的技术。例如,我在这里有一个应用程序,其中唯一有效的答案是“在发生损坏之前立即停止应用程序”和“立即触发 WATCHDOG 以关闭打开的操作”。
标签: php mysql kohana kohana-3 kohana-orm