2017-01-11 20 views
1

Symfony2 성능 자료 읽기 : http://symfony.com/doc/2.8/performance.htmlSymfony2에서 어떤 클래스 패스 캐싱 방법이 더 효과적입니까 : Composer 클래스 맵 또는 APCu를 사용하는 ApcClassLoader?

클래스 이름 경로를 캐싱하는 것이 더 나은 해결책을 찾으려고합니다. APC를 사용할 수 없기 때문에 PHP7을 사용하고 있습니다. 단지 apcu와 opcache입니다. 캐시 구현의 복잡성이나 웹 서버를 다시 시작해야하는 것과 관련하여 어떤 문제가 없다는 점을 감안할 때 가장 중요한 것은 무엇입니까? 또한 APC Autoloader를 사용하면 app.php 코드가 작곡가 autoload.php를 먼저로드하고 ApcClassLoader를 만든 다음 초기 오토로더를 등록 취소해야합니다. 사용되지 않는지도가 너무 많은 메모리를 낭비하지 않도록 클래스 맵을 지우는 것이 합리적일까요? 예 : composer dump-autoload --no-dev?

답변

0

생산에서 자동 로딩 설정 에 대한 '황금 표준'은 symfony 문서가 말하는대로 : composer dump-autoload --optimize --no-dev --classmap-authoritative입니다. 응용 프로그램에서 사용

  • --optimize 덤프 모든 PSR-0 및 PSR-4 호환 클래스입니다.
  • --no-dev 개발 환경에서만 필요한 클래스 (예 : 테스트)는 제외합니다.
  • --classmap-authoritative Composer가 클래스 맵에서 찾을 수없는 클래스에 대해 파일 시스템을 검색하지 못하도록합니다.

개발시 작성하는 모든 새 수업에 최소 composer dump-autoload이 필요하므로 이러한 최적화가 너무 어려울 수 있으며 유연성이 더 유용합니다.

클래스 맵을 디스크에 한 번 작성한 다음 다시 읽어 들인 후에는 OpCache를 통해 사용할 수 있으므로 PHP 프로세스 공간 내에 이미 최대 속도로 들어있게됩니다.

OpCache를 사용하는 데 약간의 속도를 추가하려면 캐시 된 파일의 수정 여부를 확인하는 것이 더 좋습니다.이 작업은 opcache.validate_timestamps = false으로 설정하여 해제 할 수 있습니다. 파일이 변경되면 PHP 서버 (php-fpm 또는 mod_php를 사용하는 경우 Apache)를 다시 시작하거나 그렇지 않으면 OpCache 캐시를 무효화해야합니다.