분류 php

PHP 앱 속도 최적화

컨텐츠 정보

  • 조회 534 (작성일 )

본문

이 게시물은 PHP 개발자를 대상으로 합니다. PHP 앱의 속도를 쉽게 향상 시킬 수 있는 네 가지 방법을 보여 드리겠습니다. 

PHP 7을 사용하라고 말씀 드리는 부분은 건너 뛰겠습니다. 지금 쯤이면 속도 향상이 극적이라는 것을 알아야 합니다. 

(그리고 PHP 5.x는 어쨌든 EOL이므로…)


https://dev.to/elabftw/optimizing-your-php-app-speed-3hd4


TL; DR :-a flag for composer, use opcache, use template engine cache, use 완전한 함수 이름.


0. Composer 최적화 사용 


prod 및 dev 환경은 약간 다릅니다. prod에 dev 의존성을 설치하지 말라고 말하면 놀라지 않을 것입니다.


composer install --no-dev


그것은 기본입니다. 하지만 오토로더를 최적화 할 수 있다는 것을 알고 계셨습니까? 일단 배포 된 후에는 클래스가 변경되지 않으므로 자동 로드 속도를 향상 시킬 플래그를 composer (-a)에 추가 할 수 있습니다.


composer install --no-dev -a


좋습니다.하지만 무엇을 묻겠습니까?


도움말에서 "Composer 오토로더는 클래스 맵에서만 클래스를 로드합니다"라고 말합니다. 또한 "optimize-autoloader"를 의미하므로 추가 할 필요가 없습니다. "이봐, 더 이상 클래스가 추가되지 않으므로 파일 시스템에서 새 클래스를 스캔 할 필요가 없습니다. 자동 로더에 있는 클래스 만 사용하십시오"라고 말하는 방법으로 볼 수 있습니다.


1. opcache 사용 


PHP 파일을 읽으면 opcode로 변환 된 다음 엔진에 의해 실행됩니다. prod에서는 PHP 파일이 변경되지 않으므로 매번 opcode로 변환하고 싶지는 않습니다. opcache를 입력하십시오.


opcache를 사용하면 PHP 애플리케이션의 속도를 크게 높일 수 있습니다. php.ini 파일에서 opcache_enable = 1이 주석 처리되지 않았는지 확인하십시오. 실행 된 파일에 대한 opcode를 저장합니다.


그러나 개발 환경에서는 활성화하지 마십시오.) (opcache.validate_timestamps를 활성화하고 opcache.revalidate_freq를 0 (thx u / iluuu)으로 설정하지 않는 한)


opcache-status 도구를 사용하여 opcache 사용을 모니터링 하는 것이 좋습니다 (적어도 처음에는).


opcache-status 

2. 캐시가 있는 템플릿 엔진 사용 


Twig와 같은 템플릿 엔진은 생성 된 PHP 코드의 캐시를 생성 할 수 있습니다. 여기서 속도 향상은 극적 일 수 있습니다. 다시 말하지만, dev가 아닌 prod에서만 템플릿을 캐시하려고 합니다. 그러나 캐시가 설정되어 있는지 확인하십시오. Twig의 경우 설명서를 참조하십시오.


3. 표준 함수 앞에 백 슬래시를 사용합니다. 


일반적으로 코드는 네임 스페이스입니다 (맞습니까?). 그렇다면 표준 PHP 라이브러리에서 함수를 호출하면 어떻게 될까요? "컴파일러"(opcode 생산자)는 현재 네임 스페이스를 살펴본 다음 올라가서 결국 전역 네임 스페이스를 사용합니다. 즉, 표준 함수 앞에 "\"를 추가하면 (전역 네임 스페이스에서 효과적으로 이름을 지정하면) opcode 명령이 줄어들고 코드 실행 속도가 빨라집니다. 작은 따옴표와 큰 따옴표를 사용하는 것과 같은 쓸모없는 마이크로 최적화 중 하나라고 생각하십니까? 다시 생각 해봐. 이 코드를 보자 :


code 


count ()에 백 슬래시 없이 :

no-backslash 


count () 앞에 백 슬래시가 있는 경우 :

backslash 

보시다시피 차이가 눈에 띄고 코드의 모든 함수에서 이것을 재현하면 하루가 끝날 때 눈에 띄는 차이를 만들 수 있습니다.)


결론 


이 포스트에서 보여 드리는 작은 것들은 당신의 앱을 더 빠르게 만들지 않을 것이며, 기껏해야 약간 향상 될 것입니다. 가능한 경우 속도 향상을 취하지 않는 이유는 무엇입니까? 하지만 PHP 앱 최적화에 대해 진지하게 알고 싶다면 프로파일러를 구하고 SQL 쿼리를 최적화 하는 것이 문제의 원인이기 때문입니다. 이런 종류의 일로 얻을 수 있는 몇 밀리 초가 아닙니다.)