2

私の会社の DBA は、長時間実行されているデータベース接続と本番データベースでのクエリを自動的に強制終了するスクリプトを持っています。データベースの読み取りと書き込みを定期的に行う必要があるデーモンのようなループで実行される CakePHP シェル アプリケーションを作成しました。実行時間が長すぎると、メンテナンス スクリプトによってデータベース接続が閉じられ、アプリでエラーが発生します。

CakePHP のソースを見ると、モデルがインスタンス化されると、適切なデータベースに自動的に接続しようとするようです。クエリを作成するときだけデータベースに接続してから切断する方法はありますか?

4

2 に答える 2

4

必要なときに手動で接続/切断できますか?

DboSource には、操作できるメソッドがたくさんあります。便利な関数のリストは次のとおりです。

$db = ConnectionManager::getDataSource('local');

$isconnected = $db->isConnected();  //is the connection open?
$db->close();  //close the connection
$db->reconnect();  //reconnect to the db

その他のメソッドは、DboSource API ドキュメントにリストされています

于 2012-04-11T04:57:44.043 に答える
2

これには AppModel のコールバックを使用できます。

andを使用してデータベースに接続し、 and を使用して接続を切断できるbeforeFindと思います。beforeSafeafterFindafterSafe

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 )

于 2012-04-11T06:58:20.380 に答える