2013-03-18 2 views
4

내 문제 : 나는 CakePHP의 APC 엔진 작동하는지 확인하기 위해 아파치 벤치 마크 테스트를 만드는 중이라서CakePHP의 : APC와 캐싱은 여전히 ​​캐시 파일, 어떤 성능 이점을 생성

. 그러나 APC 엔진을 사용하도록 Cake의 캐싱 구성을 설정하면 일련 화 된 캐쉬 된 데이터가있는 캐쉬 파일이 tmp 폴더에 생성되어 파일 캐싱이 사용되고 있다고 생각하게됩니다.

또한 성능상의 이점도 없습니다. APC 및 파일 엔진을 사용하면 테스트 결과가 ~ 4 초입니다. 내 컨트롤러에서 일반 apc_add() 및 apc_fetch 함수를 하드 코딩하면 테스트 결과가 좋아집니다 : ~ 3.5 초.

그래서 APC가 작동하지만 Cake는 사용할 수 없습니다.

내 설정 :

bootstrap.php :

/*Cache::config('default', array(
    'engine' => 'File', 
    'duration'=> '+999 days', 
    'prefix' => 'file_', 
));*/ 
Cache::config('default', array(
    'engine' => 'Apc', 
    'duration'=> '+999 days', 
    'prefix' => 'apc_', 
)); 

컨트롤러 :

$catalogsLatest = Cache::read('catalogsLatest'); 
if(!$catalogsLatest){ 
$catalogsLatest = $this->Catalog->getCatalogs('latest', 5, array('Upload')); 
Cache::write('catalogsLatest', $catalogsLatest); 
} 

php.ini 파일 :

[APC] 
apc.enabled = 1 
apc.enable_cli = 1 
apc.max_file_size = 64M 

내가 선택하면 캐시 :: 설정 () 캐시 전후의 컨트롤러에서 ecutuon, 나는이 결과를 얻는다 :

Array 
(
    [engine] => Apc 
    [path] => E:\wamp\www\cat\app\tmp\cache\ 
    [prefix] => apc_ 
    [lock] => 1 
    [serialize] => 
    [isWindows] => 1 
    [mask] => 436 
    [duration] => 86313600 
    [probability] => 100 
    [groups] => Array 
     (
     ) 
) 

나는 CakePHP 2.2.4를 사용하고있다.

+0

우선,이 설정은 bootstrap.php가 아니라 app/Config/core.php에 넣어야한다고 생각합니다. 분명히 구성이 인식되므로 문제가되지 않아야합니다. app/tmp 디렉토리에 작성된 캐시 파일은 CakePHP 자체가 작성한 캐시 파일 일 수 있습니다. 내용을 확인 했습니까? APC에 기록 된 내용이 있는지 확인하려면 APC 제어판을 사용하십시오. APC 제어판에는 APC에 포함되어있는 apc.php 파일을 통해 액세스 할 수 있습니다. 직접적인 대답은 아니지만 어쩌면 도움이 될 것입니다. – thaJeztah

+1

@thaJeztah 핵심 캐시 만 core.php에 있습니다. 기본 캐시 설정과 다른 사용자 정의 설정은 bootstrap.php에 있습니다. – ADmad

+0

정보를 주셔서 감사합니다. CakePHP 2.x에서 변경 되었습니까? 이것은 CakePHP 1.x에서 core.php에 있었는데, 그렇지 않습니까? – thaJeztah

답변

0

예, 당연히 APC 캐시가 cakephp 전원 응용 프로그램 성능을 향상시킵니다. 다음 지침에서 설정을 확인하고 지침에 따라 벤치 마크 테스트를하고 결과를 알려주십시오. CakePHP의 APC 캐시 엔진을 사용하여 HTML 뷰 파일 전체를 캐쉬 할 수 있습니다. Cake의 CacheHelper이 그 일을합니다. PostsController이 있고이 컨트롤러와 관련된 모든보기 파일을 캐시하려고한다고 가정합니다. 이 경우 먼저 컨트롤러에 다음 코드를 정의해야합니다.

class PostsController extends AppController { 
     public $helpers = array('Cache'); 
    } 

그리고 당신의 bootstrap.php 파일

당신은 CacheDispatcher을 추가해야합니다. 당신의 가 PostsController에서

Configure::write('Dispatcher.filters', array(
     'CacheDispatcher' 
     ) 
    ); 

이제 다시 당신은 캐시 파일에 대해 이야기해야합니다.

public $cacheAction = array(
     'view' => 36000, 
     'index' => 48000 
    ); 

이 색인 작업 13 시간 뷰 작업 10 시간 캐시 것이다.

아파치 벤치 마크 도구 테스트 결과를 알려주십시오. 나는 대부분 비슷한 질문이 다른 스레드에서 논의되고 있다고 생각한다. https://stackoverflow.com/a/18916692/1431786 그것을 확인해 보라.

감사합니다.