2017-01-17 12 views
1

큰 변수를 뷰에 전달하는 컨트롤러가 있었지만 상황에 비추어 볼 때 아무런 이유가 없습니다 (PHP는 약 100MB의 RAM을 사용함).DebugKit의 툴바 캐시가 메모리를 소모합니다.

내 문제는 DebugKit가 다음 실행에를 unserialize하기 위해 많은 메모리를 필요로하는 큰 임시 파일을 생성한다는 것입니다 :

app\tmp\cache\cake_toolbar_cache7ee836dd8c8f85f0f69f716bad0bbd94 

그것은 같은 문제가 내 파일이 모든 페이지에 성장하는 것을 제외하고, Solution to Fatal error - Allowed memory size exhausted in CakePHP FileEngine.php에 설명 있어요 load. 아무리 많은 메모리를 할당해도 PHP는 결국 시스템이 처리 할 수있는 한계를 넘어서게됩니다. 수동으로 파일을 제거하고 다시 시작해야합니다.

DebugKit이 처리하려고하는 정확한 데이터가 무엇인지 확실하지 않지만 파일에 최상위 숫자 배열이 포함되어있는 것으로 보입니다. 각 하위 배열에는 내 데이터 세트의 전체 복사본이 들어 있습니다. 요청 내역 일 수 있습니다.

디버그 레벨이 0이고 DebugKit이로드되지 않아서 프로덕션에서는 문제가되지 않지만 개발 중에는 메모리가 필요하지 않음을 확인했습니다. 간단한 수정이 있습니까?

답변

1

일부 철저한 테스트는 실제로 그것이 "역사"패널임을 확인했습니다. 그 패널은 그래서 우리가 할 수있는 컨트롤러에서 구성 할 수 있습니다 :

  • 것이 확인 짧은 역사 :

    public $components = array(
        'DebugKit.Toolbar' => array('history' => 2), 
    ); 
    
  • 안 역사 : 내가 두 번째로 좋은 결과를 얻었다

    public $components = array(
        'DebugKit.Toolbar' => array(
         'panels' => array(
          'history' => false, 
         ), 
        ), 
    ); 
    

접근하고 어쨌든 나는 역사를 사용하지 않았다.