우리 응용 프로그램에서 우리는 응용 프로그램의 객체를 나타 내기 위해 서브 클래스 인 Zend_Db_Row
을 사용합니다. 이러한 객체는 다양한 가져 오기 기능에 의해 반환됩니다.Zend_Db_Row 서브 클래스의 로컬 "Cache"
<?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]')
은 단일 PHP 스크립트 실행에서 10 번 나타납니다.
이러한 개체를 캐싱하기 위해 memcached를 사용할 계획이지만 데이터베이스를 10 번 호출하는 대신 캐시 서버를 10 번 호출합니다. memcache를 사용하는 것이 더 빠르지 만 캐시 서버를 한 번만 호출해야합니다 (10 번 대신).
어떤 유형의 로컬 캐시를 보관할 수있는 모든 프레임 워크/모듈이 있습니까? 스크립트가 $modelUsers->fetchWithEmail('[email protected]')
을 호출하면 스크립트 실행이 완료되거나 (업데이트 또는 삭제 함수가 데이터베이스에서 해당 행의 값을 변경하기 전까지) 스크립트 메모리에 들어갑니다.
내가 들었 그것은 흥미로운, 그러나 우리의 전체를 보이는 않는뿐만 아니라 동료에서 응용 프로그램은 이미 Zend_Db를 기반으로합니다. – aporat