В нашем приложении мы используем подклассы 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('user@domain.com')
появляется 10 раз при выполнении одного скрипта php.
Мы планируем использовать memcached для кэширования этих объектов, однако он все равно будет вызывать кеш-сервер 10 раз (вместо того, чтобы вызывать базу данных 10 раз). использование memcache будет быстрее, но мы хотим вызвать кеш-сервер только один раз (вместо 10 раз)
Какой-нибудь фреймворк / модуль фреймворка Zend, который может помочь нам заархивировать какой-то локальный кеш? То, что если наш скрипт вызовет $modelUsers->fetchWithEmail('user@domain.com')
, он войдет в память скрипта, пока выполнение скрипта не будет завершено (или функция обновления или удаления изменила значение этой строки в базе данных)