2012-07-12 3 views
4

APC에서 캐시 할 큰 데이터 부분이 있습니다 (일반 파일 캐싱이 너무 느립니다).PHP + APC : 데이터를 최대 128M 캐시하는 방법은 무엇입니까?

내가 이런 식으로 뭔가를 시도 :

ini_set('apc.max_file_size', '128M'); 
die(ini_get('apc.max_file_size')); 

그리고 출력은 1M입니다 apc_store 함수는 항상 데이터의 양 false를 반환! 오류는 발생하지 않지만 단순히 작동하지 않습니다. 다른 모든 ini_set (예 : memory_limit)이 제대로 작동하므로 권한 문제가 아닙니다.

내 APC 정보는 다음과 같습니다

Version 3.1.3p1 
MMAP Support Enabled 
MMAP File Mask no value 
Locking type pthread mutex Locks 
Revision $Revision: 286798 $ 
Build Date Apr 18 2010 06:56:17 

및 설정은 다음과 같습니다

apc.cache_by_default On 
apc.canonicalize On 
apc.coredump_unmap Off 
apc.enable_cli Off 
apc.enabled On 
apc.file_md5 Off 
apc.file_update_protection 2 
apc.filters no value 
apc.gc_ttl 3600 
apc.include_once_override Off 
apc.lazy_classes Off 
apc.lazy_functions Off 
apc.max_file_size 1M 
apc.mmap_file_mask no value 
apc.num_files_hint 1000 
apc.preload_path no value 
apc.report_autofilter Off 
apc.rfc1867 Off 
apc.rfc1867_freq 0 
apc.rfc1867_name APC_UPLOAD_PROGRESS 
apc.rfc1867_prefix upload_ 
apc.rfc1867_ttl 3600 
apc.shm_segments 1 
apc.shm_size 128 
apc.stat On 
apc.stat_ctime Off 
apc.ttl 0 
apc.use_request_time On 
apc.user_entries_hint 4096 
apc.user_ttl 0 
apc.write_lock On 

는 내가 같은 빅 데이터의 묘약 캐싱을 허용하도록 설정해야합니까?

+1

'var_dump'는'init_set'의 출력입니다.false 인 경우 스크립트가 PHP 설정을 수정할 수있는 권한을 설정하지 않았을 수 있습니다. –

+0

바로 그거야! var_dump (ini_set ('ap_max_file_size', '128M'));의 출력은'bool (false) '이며'var_dump (ini_set ('memory_limit ','1024M '));의 출력은'1024M'이다. ':/ – Karol

답변

3

@Ugo Meda의 의견에 이어, 나는이 문제에 대한 나의 해결책을 당신과 함께 나누고 싶습니다. APC 설정 (예 : apc.max_file_size)을 ini_set을 통해 설정할 수 없음을 올바르게 지적했습니다. 다른 설정 (예 : memory_limit)이 제대로 작동하는 동안 단순히 false을 반환합니다!

그래서 내가 할 수있는 유일한 일은 apc.ini에서 직접 설정하는 것이 었습니다. 우분투에서이 파일의 위치는 다음과 같습니다

/etc/php5/conf.d/apc.ini 

때때로 APC 설정이 섹션 [APC]에서 php.ini 파일에 - 우분투에서이 파일의 위치는 다음과 같습니다

/etc/php5/apache2/php.ini 

경우 당신은 할 수 없습니다 이러한 파일이없는 경우

find/-name apc.ini 

이 (apc.ini) php.ini 파일을 찾기 위해 노력하고있다 [APC] 섹션 :

,691,363 찾을 단순히이 명령을 실행210
find/-name php.ini 

올바른 설정 파일을 찾으면 옵션을 수정할 준비가 된 것입니다. 아파치 (- /etc/init.d/apache2 restart 우분투)를 다시 시작 단순히 저장하고, 편집 한 후

apc.shm_size=512 

apc.max_file_size=128M 

: 나는 단순히이 두 가지가 라인을 추가했다. 어떤 이유로 든이 명령을 실행할 수 없거나 언급 된 * .ini 파일에 대한 권한이없는 경우 위의 각 명령의 시작 부분에 sudo 명령을 추가하십시오.

apc.shm_size에 대해 한 번 더 참고 :

하여 APC의 버전이 3.1.4보다 낮은 경우 내가 (더 'M 썼다,이 설정 옵션의 다음 값이 같은 형식으로 작성해야합니다 '끝에). 버전이 3.1.4 이상인 경우 다음과 같이 지정해야합니다 : 512M.

출처 : http://e-mats.org/2010/10/apc_mmap-mmap-failed-cannot-allocate-memory/

@Ugo 메다의 - 다시 한번 감사 나에게이 문제를 지적 해!

+0

.htaccess로 설정할 수있는 방법이 있습니까? – urfusion

관련 문제