2010-02-26 4 views
0

모든 페이지에 57K 생성 PHP 파일이 포함 된 PHP 사이트가 있습니다. 나는 opcode 캐쉬를 사용할 생각이다. 그래서 파일은 페이지가로드 될 때마다 파싱 될 필요가 없다. (나는 이미 파싱 된 파일을로드하는 것이 57K 소스 파일을 읽는 것보다 빠를 것이라고 가정한다.)컴파일이 필요없는 간단한 PHP opcode 캐싱 솔루션?

APC는 이것에 대한 좋은 후보로 보이지만 phpinfo에 따르면 나의 Godaddy 공유 호스팅에는 컴파일되지 않아 공유 호스팅 환경에서 컴파일 및 설치할 수 없습니다. Zend 프레임 워크가 설치되었지만 문서에 따르면 APC 또는 다른 opcode 캐시가 백엔드로 필요합니다.

opcode 캐싱을 수행하려면 어떤 다른 옵션이 필요합니까? PHP로만 작동하는 opcode 캐싱 솔루션이 있나요? 단순히 godaddy로 FTP 할 수 있습니까?

답변

0

는 PHP 전용 옵 코드 캐싱 해결하는 내가 에서 GoDaddy 단순히 FTP 할 수 있는가?

불행히도, 아니오. .php 파일이 실행될 무렵에는 해석과 컴파일 작업이 이미 수행되기 때문에 이미 너무 늦었습니다.

따라서, 컴파일 된 PHP 확장, ...

+0

그래, PHP 파일이 다른 PHP 파일 (위의 생성 파일)을로드하면 load_opcode_if_possible ("x.php") 함수를 제공하는 PHP 패키지를 상상할 수 있으며이 함수는 이미 준비된 opcode 파일을 먼저 준비하고 사용 가능하지 않은 경우 소스 코드 파일을 읽고 다음 번에 사용할 디스크에 파싱 된 opcode 파일을 즉시 작성합니다. – Tom

+0

@Tom : 이론적으로 당신은 이것을 할 수는 있지만 PHP는 (내가 아는 한) 컴파일하기 전에 해석 단계에서 include/required 파일을 가져 오기 때문에 자체 패널티가 있습니다. – Powerlord

0

옵 코드를 파일 PHP 파일 읽기를 구문 분석, 옵 코드로 컴파일 및 실행으로 실행해야합니다, 모든 내부에서 내부적으로 이루어집니다 PHP 엔진 - PHP 스크립트가이 프로세스를 완전히 제어 할 수 없음을 의미합니다. 이 프로세스를 변경하는 유일한 방법은 PHP 확장 (PHP 확장은 C로 개발 된 확장을 의미 함)을 사용하는 것입니다.이 컨트롤은 훨씬 더 높은 수준의 제어 권한을가집니다.

이것은 순수 PHP에서 개발 된 opcode-cache를 얻을 수있는 방법이 없음을 의미합니다. opcode 조작, 컴파일 및 캐싱은 PHP에서 제어 할 수없는 작업입니다.

PHP 확장 기능이 엔진 내부에 대한 액세스 권한을 가지기 때문에 서버 관리자 만이 PHP를 설치하고 실행할 수 있습니다. PHP를 중단하고 원하는 메모리를 모두 먹을 수 있다고 생각하면 이유를 이해할 수 있습니다.

APC와 같은 opcode 캐시를 사용하고 싶다면 자체 호스팅 서버를 사용하는 호스팅 서비스를 사용해야합니다. .