アプリケーションの中では、アプリケーションのオブジェクトを表すのにZend_Db_Row
のサブクラスを使用します。これらのオブジェクトはさまざまなフェッチ関数によって返されます。Zend_Db_Rowサブクラスのローカル "キャッシュ"
<?php
require_once 'Zend/Db.php';
class Model_Users extends Zend_Db_Table_Abstract
{
protected $_name = 'users';
protected $_primary = 'userId';
protected $_rowClass = 'Model_User';
/**
* fetch user by email
*
* @param string $email
*/
public function fetchWithEmail($email)
{
$select = $this->select();
$select->where('email = ?', $email);
return $this->fetchRow($select);
}
}
異なる機能、モデル、コントローラなどからフェッチ関数を複数回(同じ値で)呼び出すことが問題です。たとえば、$modelUsers->fetchWithEmail('[email protected]')
は、1回のPHPスクリプト実行で10回表示されます。
これらのオブジェクトをキャッシュするためにmemcachedを使用する予定ですが、(データベースを10回呼び出す代わりに)キャッシュサーバーを10回呼び出します。 memcacheを使用する方が高速ですが、キャッシュサーバーを(10回ではなく)1回だけ呼び出すようにします。
何らかのローカルキャッシュをアーカイブするのに役立つフレームワーク/モジュールですか?スクリプトが$modelUsers->fetchWithEmail('[email protected]')
を呼び出すと、スクリプトの実行が完了するまで(または更新または削除関数がデータベースのその行の値を変更するまで)スクリプトメモリに入ります。
などAPC、Memcacheの、フラットファイルを、使用することができます私は同僚からだけでなく聞いて、それは面白そうだん、しかし、私達の全体アプリケーションはすでにZend_Dbに基づいています。 – aporat