在我们的应用程序中,我们使用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);
}
}
问题是我们从不同的函数,模型,控制器等多次调用fetch函数(具有相同的值)。例如,$modelUsers->fetchWithEmail('user@domain.com')
在单个php脚本执行中出现10次。
我们计划使用memcached来缓存这些对象,但是,它仍然会调用缓存服务器10次(而不是调用数据库10次)。使用memcache会更快,但我们只想调用缓存服务器一次(而不是10次)
zend框架的任何框架/模块可以帮助我们存档某种本地缓存?如果我们的脚本将调用$modelUsers->fetchWithEmail('user@domain.com')
,它将进入脚本内存,直到脚本执行完成(或者更新或删除函数更改了数据库中该行的值)
答案 0 :(得分:1)
Doctrine ORM实现了EntityManager。
EntityManager API用于管理对象的持久性并查询持久对象。
http://www.doctrine-project.org/docs/orm/2.1/en/reference/architecture.html#the-entitymanager
答案 1 :(得分:1)
Zend_Cache可以使用,你可以使用Apc,Memcache,Flat文件等。