2013-02-25 5 views
2

현재 아무 것도 캐시하지 않고 doctrine 2를 사용하고 있습니다. 나는 교리 내에서 일부 캐싱 시스템을 사용하려는하지만 당신은 수동으로 사방에 그것을 관리해야하는 것 같습니다 : 나는 교리가이 작업을 자동으로 관리 할 수 ​​있는지 알고 싶습니다Doctrine - 엔티티가 수정되었을 때 쿼리 캐시를 깨뜨림 (두 번째 레벨 캐시)

$memcache = new Memcache(); 
$memcache->connect('memcache_host', 11211); 

$cacheDriver = new \Doctrine\Common\Cache\MemcacheCache(); 
$cacheDriver->setMemcache($memcache); 
$cacheDriver->save('cache_id', 'my_data'); 
... 
$cacheDriver->delete('cache_id'); 

. 예를 들어 :

  1. 캐시는 캐시에 교리 검색, 사용자를 찾을 수없는, 그것을 돌려 캐시로 설정, 그것을 가져 나는 ID로 User 엔티티를 요청 가능합니다.

  2. 두 번째 시간을 가져 오면 Doctrine이 캐시 된 User을 반환합니다.

  3. 내가 업데이트 User (또는 그 관계의) 교리가 그것을 감지하고
  4. 내가 ID로 같은 User이 교리는 더 이상 캐시에없는 요청이 객체 캐시를 휴식, 그것을 가져 오기 및 설정 업데이트 된 사용자와 캐시를 되돌려 보내기 이전에

가능합니까? 당신이 (교리 ORM에서) 뭘 찾는거야

건배, 막심

답변

3

resultset cache 지원, 만 DQL 쿼리에 의해 생성 된 SQL 쿼리의 결과에 적용됩니다.

당신이 찾고있는 기능에 대한 정확한 이름은 아직 교리 ORM 지원하지 않습니다 "second-level cache"이지만, 현재 지금 https://github.com/doctrine/doctrine2/pull/580

에서 (희망 버전 2.5에서 사용할 수 있습니다) 개발되고있다 실제로 필요한 경우 자신의 서비스 계층에서 이러한 종류의 캐싱을 처리해야합니다.

+0

흥미 들으 메이트에 의해 수행됩니다 있어요하여 엔티티를 당기는 경우) – maxwell2022