2012-02-18 10 views

答えて

0

両方のDBALのブートストラップとAPIの使用は簡単です。

主な問題はdb接続を再利用していることです。すなわち、実行パスが両方ともDoctrineZend_Dbを消費するリクエストの1つが別の接続を開くべきではありません。

それはDoctrine\DBAL\Connectionを返すメソッドgetWrappedConnection()有するように思われる - (まだ実際にSPLのPDOクラスのサブクラスが、PDOのインスタンス)PDO接続 - たとえば。原則として、Doctrineを最初にブートストラップし、この接続をつかんで、何とかこれをZend_Db_Adapterに渡すことができます。しかし、Zend_Db_Adapter_Abstract::getConnection()というメソッドが表示されていますが、setConnection()というメソッドは表示されません。おそらく、希望するZend_Dbアダプターのカスタムサブクラスを作成するのでしょうか?

私が見る他の問題は、Doctrine\DBAL\Connection::getWrappedConnection()が実際に接続を開くことです。ブートストラップ中にこれを呼び出し、その接続をZend_Db側に渡すと、両方のDBALの遅延接続機能が失われてしまいます。

もちろん、実行パスがDoctrineZend_Dbの両方を呼び出す必要がない場合は、おそらく問題ありません。その両方をブートストラップして、必要なコードを呼び出します。それに対処する処理能力があれば、リクエストあたり2つの接続がゲームキラーではないかもしれません(それはかなり重大なものですが)。

大声で考えてみましょう。

+0

[このpodast](http://voicesoftheelephpant.com/2012/02/21/interview-with-matthew-weier-ophinney/)に記載されているMWOPは、ZF2 'Zend \ Db'の目標の1つが、 'Zend \ Db'と' Doctrine2'の間の接続共有を容易にすることです。 –

関連する問題