저는 대부분의 요청에 대해 약 100 개의 파일을 포함하는 동적 PHP 코드를 제공하는 트래픽이 많은 웹 서버 팜에서 작업하고 있습니다. APC opcode 캐시가 활성화되어 있고 include_once_override가 활성화되어 있고 캐시에 64MB 램을 할당했지만 아직 아파치 프로세스를 strace 할 때 open() 및 stat()를 모두 볼 때 필요한 모든 요청 캐시에서 꺼냈다. 캐시 통계에서 캐시가 채워지고 100 % hitrate와 함께 사용되는 것을 볼 수 있습니다. 아무도 통찰력을 제공 할 수 있습니까?APC를 사용할 수 있지만 아파치가 파일을 여는 중입니까?
5
A
답변
7
애플리케이션에 포함 할 때마다 전체 경로 이름을 사용해야합니다. 은 APC 문서 당 :
apc.stat 정수
이 설정을 변경주의해야합니다. 이 기본값은 on으로 설정되어 APC가 각 요청에 대해 스크립트를 수정 (확인)하여 강제로 수정되었는지 확인합니다. 수정 된 경우 새 버전을 다시 컴파일하고 캐시합니다. 이 설정이 꺼져 있으면 APC는 확인하지 않습니다. 이는 APC가 강제로 파일을 다시 검사하도록하고 웹 서버를 다시 시작해야하거나 캐시를 수동으로 지워야 함을 의미합니다. FastCGI 웹 서버 구성은 다시 시작할 때 캐시를 지울 수 없습니다. 스크립트 파일이 거의 변경되지 않는 프로덕션 서버에서는 통계가 비활성화되어 성능이 크게 향상됩니다.
포함/필수 파일의 경우이 옵션도 적용되지만 상대 경로 포함 (Unix에서 /로 시작하지 않는 경로)의 경우 APC는 파일을 고유하게 식별하기 위해 검사해야합니다. 절대 경로 포함을 사용하는 경우 APC는 통계를 건너 뛰고 해당 절대 경로를 파일의 고유 식별자로 사용할 수 있습니다.
PHP를위한 엄지 손가락의 좋은 규칙과 같이 프로젝트의 전체 경로가 포함 된 상수 정의하는 것입니다 :
이// Assumes __FILE__ is in the root of your project
define('PATH_PROJECT', realpath(dirname(__FILE__)));
다음 사용을 당신과 같이 포함
include_once PATH_PROJECT . '/some/dir/file.php';
따라서 상대 경로의 편리 성은 여전히 유지되지만 실제로는 전체 경로가 사용됩니다.
관련 문제
- 1. 아파치가 PHP에서 쓸 수 있지만 파일을 제공하지 않는 디렉토리
- 2. IIS7에서 SQL 연결을 여는 중입니까?
- 3. 아파치가
- 4. 동일한 파일을 다른 플래그로 두 번 여는 중입니까?
- 5. 소스를 바이트 코드로 변환하는 데 PHP APC를 사용할 수 있습니까?
- 6. Flash에서 Print-HTML-Popup을 여는 중입니까?
- 7. 파일 대신 이진 스트림에서 SQLiteConnection을 여는 중입니까?
- 8. cat은 사용할 수 있지만 Hadoop DFS 파일은 사용할 수 없습니다.
- 9. PHP 파일을 다운로드 중입니까?
- 10. org.eclipse.jdt.ui.wizards.NewClassWizardPage는 Linux에서는 사용할 수 있지만 Mac에서는 사용할 수 없습니까?
- 11. ContextMenuStrip은 NotifyIcon에서 사용할 수 있지만 ContextMenu에서는 사용할 수 없습니까?
- 12. 아파치가 파일을 올바르게 처리하지 않음 (처리기 도움말)
- 13. .apk 파일을 여는 방법
- 14. node.js 서버에서 파일을 읽는 중입니까?
- 15. iframe에서 파일을 여는 방법
- 16. .hprof 파일을 여는 방법
- 17. .a 파일을 여는 방법
- 18. 다른 스레드에있는 메서드/함수로 다른 폼을 여는 중입니까?
- 19. 우분투에서 .accdb 파일을 여는 방법?
- 20. HttpContext.Current.Session은 HttpModule에서 사용할 수 있지만 Response.Filter에서는 사용할 수없는 이유는 무엇입니까?
- 21. IE8 또는 크롬으로 분리 된 세션을 여는 중입니까?
- 22. 젠드 서버가 APC이고 아파치가 함께 설치되어 있습니까?
- 23. 안돼서 안드로이드 문제 : 응용 프로그램이 틀린 main.xml을 여는 중입니까?
- 24. Centos 5.6에서 apc를 설치하는 방법
- 25. php를 사용하여 읽기 모드에서 Word 문서를 여는 중입니까?
- 26. VCE 파일을 여는 방법은 무엇입니까?
- 27. * .sdf 파일을 여는 방법은 무엇입니까?
- 28. Fancybox - fancybox 내부의 링크를 동일한 fancybox에 여는 중입니까?
- 29. iPad에서 iWork로 파일을 여는 방법
- 30. Eclipse에서 jar 파일을 여는 방법
include_once_override를 사용하거나 사용하지 않는 서버를 벤치마킹 해 주시겠습니까? – hobodave
감사합니다. 그래, 내가 벤치마킹을했는지, 그리고 눈에 띄는 차이를 보지 못 했어. 절대 경로를 구현 한 후 stat()를 사용하는 것이 훨씬 적지 만 필자가 포함하는 모든 파일에 대해 access()를 볼 수 있습니다. apc.stat = 0.이게 정상입니까? 왜 파일을 액세스해야합니까? – Will
파일의 초기 포함 만보고 계시겠습니까? 어떤 버전을 사용하고 있습니까? APC는 역사적으로 include_once_override에 문제가있었습니다. 또한 답변을 사용하는 대신 원래의 질문을 응답으로 편집하십시오. – hobodave