我公司的DBA有一个脚本可以自动杀死我们生产数据库上长时间运行的数据库连接和查询。我编写了一个CakePHP Shell应用程序,它运行在循环中,有点像守护进程,它定期需要进行数据库读写。如果运行时间过长,维护脚本将关闭数据库连接,并且我的应用程序出错。
查看CakePHP源代码,似乎在实例化模型时,它会自动尝试连接到相应的数据库。有没有办法在进行查询时连接到数据库,然后断开连接?
答案 0 :(得分:4)
也许您可以在需要时手动连接/断开连接?
DboSource有很多方法供你玩。以下是可能有用的功能列表:
$db = ConnectionManager::getDataSource('local');
$isconnected = $db->isConnected(); //is the connection open?
$db->close(); //close the connection
$db->reconnect(); //reconnect to the db
中列出了更多方法
答案 1 :(得分:2)
也许您可以在AppModel中使用回调来实现此目的。
我猜您可以使用beforeFind
和beforeSafe
建立与数据库的连接,然后使用afterFind
和afterSafe
来终止您的连接。
至于权利'使用核心Cake功能打开和关闭数据库连接的方式,我不确定,但Costa的答案似乎是一个很好的(干净!)计划。
(1)http://book.cakephp.org/1.3/en/view/922/Database-Configuration(链接停止工作,猜你现在应该看看这里:http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Configuration.html)