2016-10-11 8 views
3

내 엔티티 중 하나에 열을 추가하고 프로덕션 용으로 릴리스 할 때이 문제가 발생합니다. Doctrine 메타 데이터 APC/APCU 캐시를 지우려면 Apache를 다시 시작해야합니다.프로덕션을 위해 Doctrine APC 캐시를 지우는 방법은 무엇입니까?

나는 아래의 모든 명령을 시도했지만 아무도 나를 위해 일한 :

php -r "apc_clear_cache();" 
php -r "apcu_clear_cache();" 

sudo php app/console doctrine:cache:clear-metadata 
sudo php app/console doctrine:cache:clear-query 
sudo php app/console doctrine:cache:clear-result 

내가 --env 나는 그것이 교리를 새로 얻을 수있다 = 자극

sudo php app/console doctrine:cache:clear-metadata --env=prod 
sudo php app/console doctrine:cache:clear-query --env=prod 
sudo php app/console doctrine:cache:clear-result --env=prod 

[LogicException] 
    Cannot clear APC Cache from Console, its shared in the Webserver memory and not accessible from the CLI. 

유일한 방법이 오류 메시지가 캐시는 언젠가 문제가 될 수있는 내 아파치 서버를 다시 시작하는 것입니다. 내 심포니 프로젝트의 Doctine에 대한

내 캐시 설정 :

doctrine: 
    orm: 
     metadata_cache_driver: apc 
     result_cache_driver: apc 
     query_cache_driver: apc 
     second_level_cache: 
      enabled: true 
      log_enabled: false 
      region_cache_driver: apc 

어떻게 아파치 때마다 다시 시작하지 않고이 경우 명확한 APC 캐시는 내가 생산에 새로운 스키마 업데이트를 해제 할 수 있습니다. 로드 밸런서 뒤에 많은 서버가있는 경우이 상황은 더욱 심각합니다.

답변

0

콘솔에서 지우는 대신 컨트롤러 나 app.php에서 해보십시오. 내가 캐시를 지워야 할 때

//apcu_clear_cache(); 

, 나는 그냥 주석 처리하고 페이지를로드 :

은 내가 app.php에 주석이 라인을 가지고있다. 그것은 나를 위해 작동합니다.

0

Smart-Core/AcceleratorCacheBundle에서 CLI에서 PHP Accelerator 캐시를 삭제하는 명령을 제공하십시오.

php app/console cache:accelerator:clear 

사이먼이 또한 Capifony의 조리법을 포함한다 :

이 같은 CLI 명령으로 캐시를 플러시 허용 할 수 있습니다.

희망이 도움

+1

가급적이면 다른 번들을 사용하고 싶지는 않습니다. – PMoubed

0

실행할 때 apc_clear_cache(); cli가 아닌 앱에서 교리 캐시가 지워집니다. 당신은 관리자 패널에서 어떤 버튼을 만들거나 예를 들어, 지정된 파일에 각 업데이트 후 서버에 컬 요청을 보낼 수 있습니다

autorize 요청 및 캐시 지우기 내부

http://example.com/apc_cache_clear.php

+0

서버가 100 대 있다면 어떨까요? – PMoubed

0

당신이 PHP를 이해해야한다 아파치 (또는 Nginx)에서 실행하는 것은 PHP가 명령 행을 통해 실행하는 것과는 다르며 통신 할 수없는 2 Linux 프로세스입니다.

따라서 CLI를 통해 캐시를 지울 수 있더라도 Apache의 php에는 영향을 미치지 않습니다.

symfony 컨트롤러에서 apcu_clear_cache을 호출하는 가장 쉬운 방법은 또는 CLI를 통해 Apache Php 소켓을 사용할 수 있습니다.

완벽하게 수행하는 http://gordalina.github.io/cachetool/ 같은 도구를 사용하는 것이 좋습니다.