글
최신 PHP에 대응하는 eAccelerator 빌드를 구하기 어려운 경우가 있는데, 더군다나 Win32 빌드가 버그가 있어서 캐시가 제대로 저장되지 않고 error_log에 오류를 뿌려대는 버그가 있습니다.
... EACCELERATOR: Open for write failed for "C:/tmp/eaccelerator/0/3/2//eaccelerator-322dca16f42e18e9c9905165d150e901": No such file or directory ...
이를 수정하기 위해서 win32 빌드를 직접 해 보았습니다.
빌드하는 방식은 다음 사이트를 참고하여 정확히 따라하면 완벽하게 빌드됩니다.
How to build APC or eAccelerator for PHP on windows
(블로그를 검색해보면 한글로 설명해놓은 곳도 많으니 참고하시기 바랍니다.)
캐시 디렉토리가 잘 못 지정되는 버그에 대한 패치는 다음과 같습니다.
--- a/eaccelerator.c +++ b/eaccelerator.c @@ -396,7 +396,11 @@ int eaccelerator_md5(char* s, const char* prefix, const char* key TSRMLS_DC) PHP_MD5Update(&context, (unsigned char*)key, strlen(key)); PHP_MD5Final(digest, &context); make_digest(md5str, digest); +#ifndef ZEND_WIN32 snprintf(s, MAXPATHLEN-1, "%s/%d/", EAG(cache_dir), ea_mm_instance->cache_dir_uid); +#else + snprintf(s, MAXPATHLEN-1, "%s/", EAG(cache_dir)); +#endif n = strlen(s); for (i = 0; i < EACCELERATOR_HASH_LEVEL && n < MAXPATHLEN - 1; i++) { s[n++] = md5str[i];
이 문제는 커밋 "Windows reverted to the old way, to hard to get a uid."의 부족분을 약간 더 수정한 것입니다.
다음 첨부파일은 PHP 5.4.19 소스를 바탕으로 컴파일된 결과물이며, TS / NTS 버전을 각각 포함하고 있습니다.
eAccelerator-v1.0-php-5.4.xy.zip
※ 주의: eAccelerator는 PHP 최신의 일부 기능이 제대로 안되는 문제가 있으며, 여기에 첨부된 dll은 이 문제에 관련된 패치가 전혀 적용되어 있지 않으니 주의하셔야 합니다.
'오픈소스' 카테고리의 다른 글
mod_disk_cache로 도쿠위키 속도 향상시키기 (0) | 2013.11.08 |
---|---|
mod_disk_cache로 모니위키 속도 향상시키기 (0) | 2013.11.08 |
모니위키 속도 300RPS 벽을 깨다. (0) | 2013.05.21 |
모니위키 1.2.0 릴리스 준비 진행상황 (0) | 2013.05.18 |
리눅스에서 svox-pico 사용하기 (0) | 2013.03.14 |
RECENT COMMENT