2014-10-20 3 views
0

컨트롤러 (Symfony2)의 한 개인 변수에 데이터를 저장할 수 있습니까?Symfony2 컨트롤러의 캐시 변수

한 예 : 누군가가 URL 호출 할 때마다이 예에서

/** 
* Class CatsController 
* 
* @Route("cats") 
* @Cache(expires="+600 seconds", public=true) 
* @package oTeuGato\AppBundle\Controller 
*/ 
class CatsController extends Controller { 

/** 
* @var $advertisements Advertisement[] 
*/ 
private $advertisements; 

/** 
* Index advertisements page 
* 
* @Route("", name="oTeuGato_Cats") 
* @Method("GET") 
* @return Response 
*/ 
public function indexAction() 
{ 
    $this->advertisements = ....(Use a service for gets advertisements) 
} 

/** 
    * Index advertisements by page 
    * 
    * @Route("/{id}", requirements={"id" = "\d+"}, defaults={"id" = 1}, name="oTeuGato_Cats_ByPage") 
    * @Method("GET") 
    * @return Response 
    */ 
public function indexByPageAction(){ 
    .... 
} 

: 고양이/I가 이전에 호출 된 메서드 (/ 고양이)의 모든 광고가 그들을 필요로하는 컨트롤러 1.

이것이 가능합니까?

참고 : app.php 파일 및 app_dev.php에서 캐시를 사용하도록 설정했습니다.

내 영어를 도와 주셔서 감사합니다.

답변

1

Symfony는 설명하는 것에 대한 메커니즘을 제공하지 않습니다. 그러나 PHP를 위해 더 일반적으로 작동하는 모든 솔루션은 Symfony에서 작동합니다.

각 사용자 또는 모든 사용자에 대한 광고를 기억할 것인지 여부에 달려 있습니다. Gareth Parker가 제안한대로 각 사용자별로 기억하고 싶다면 세션을 사용하십시오. 모든 사용자에 대해 기억하고 싶다면 APC 사용자 캐싱, memcache 또는 다른 메모리 기반 키 - 값 저장소가 필요합니다.

Doctrine 결과 캐시를 사용하면 운이 좋을 수도 있습니다. http://doctrine-orm.readthedocs.org/en/latest/reference/caching.html

을 참조하십시오.
0

아니요. 어쨌든, 그렇지 않아. 원하는 것은 sessions 대신 사용하는 것입니다. 세션은 요청간에 변수를 저장하는 데 사용합니다. Here은 몇 가지 예입니다.