PHP 8.0이 나왔습니다! JIT 컴파일을 켜는 방법

Nov 26, 2020부터 PHP 8.0이 "일반적으로 사용 가능"합니다. (나는 그것이 그 페이지에서 GA가 의미하는 것임을 오늘 배웠다.)

사람들은 벤치마킹을 했고 PHP 8.0으로의 업그레이드가 웹사이트의 성능 향상을 의미할 가능성이 높다는 것을 발견했습니다. 빠른 로딩 페이지는 SEO 목적과 물론 사이트의 실제 사용자 모두에게 중요합니다.

PHP 8.0은 이제 성능 향상을 더욱 향상시킬 수 있는 JIT 컴파일러와 함께 제공됩니다. JIT는 "Just in time"을 의미하며 PHP가 해석 계층의 도움 없이 코드를 기계 코드(CPU가 이해하는 코드)로 직접 컴파일할 수 있음을 의미합니다. CPU를 많이 사용하는 작업의 경우 PHP에서 JIT 컴파일러를 사용하면 성능이 크게 향상됩니다.

모든 PHP 개발자는 다음을 놓치고 있습니다.



PHP 8.0의 새로운 기능에 대해 자세히 알아보려면 다음 기사를 확인하십시오.
  • https://torquemag.io/2020/11/php-8/
  • https://stitcher.io/blog/php-jit
  • https://thephp.website/en/issue/php-8-jit/

  • 🔦 JIT 컴파일을 켜는 방법



    PHP 7.x를 사용해 왔다면 아마도 OPcache 확장에 익숙할 것입니다. (그렇지 않다면 지금 켜져 있는지 확인하세요. 성능이 크게 향상됩니다.)

    PHP 8.0의 경우 JIT 컴파일은 동일한 OPcache 확장을 통해 활성화됩니다. 따라서 프로젝트에 대해 JIT 컴파일을 켜는 첫 번째 단계는 OPcache 확장이 설치되고 활성화되었는지 확인하는 것입니다.

    installing the OPcache extension에 대한 프로세스는 PHP를 실행하는 플랫폼에 따라 크게 달라집니다. Linux의 취향에 대한 문서를 확인하십시오. official PHP Docker images을 사용하는 경우 설치가 매우 쉽습니다.

    $ docker-php-ext-install opcache
    

    설치되었는지 확인하려면 명령줄에서 php -i를 실행하여 phpinfo() 을 인쇄할 수 있습니다.

    $ php -i | grep 'opcache\.enable '
    opcache.enable => On => On
    

    🖊️ JIT 컴파일을 활성화하도록 Opcache 설정을 조정합니다.



    이제 Opcache 확장을 설치했으므로 JIT가 켜져 있다는 의미는 아닙니다. 실제로 JIT 컴파일을 활성화하려면 몇 가지 기본 ini 설정을 재정의해야 합니다. 이를 위해 기존 opcache.ini 파일을 찾을 수 있는지 확인할 수 있습니다. 제가 보통 그렇게 하는 방법은 다음과 같습니다(다시 말하지만 phpinfo() ).

    php -i | grep opcache\.ini
    /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
    

    보시다시피 이것은 제가 사용하고 있는 Docker 이미지이므로 여기에서 변경한 사항은 지워질 수 있지만 지금은 괜찮습니다. 나는이 시점에서 땜질하고 있습니다. 해당 파일을 편집하고 다음 설정을 추가하겠습니다.

    # Turn on the OPcache for command-line PHP, like drush or 
    # wp-cli, etc.
    opcache.enable_cli=1
    
    # The amount of shared memory to reserve for compiled JIT
    # code. A zero value disables the JIT.
    opcache.jit_buffer_size=50M
    
    # JIT control options. Either accepts a string or a 4 digit 
    # int for advanced controls. See 
    # https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.jit
    opcache.jit=tracing
    


    참고: Docker에 대한 보다 영구적인 솔루션을 원하는 경우 컨테이너의 $PHP_INI_DIR/conf.d/ 디렉토리에 복사되거나 마운트되는 고유한 ini 파일을 생성하십시오.

    이러한 설정에 대한 자세한 내용은 OPcache Runtime Configuration 또는 PHP RFC: JIT을 확인하십시오. 3글자 약어 3개입니다. 🤦‍♂️


    php -i를 다시 사용하여 설정이 제대로 작동하는지 다시 한 번 확인할 수 있습니다.

    $ php -i | grep -E '^opcache\.(enable_cli|jit|jit_buffer_size) '
    opcache.enable_cli => On => On
    opcache.jit => tracing => tracing
    opcache.jit_buffer_size => 50M => 50M
    

    그게 다야! 이제 PHP 8.0에서 JIT 컴파일을 활용하고 있습니다. (Apache PHP 모듈을 사용하는 경우 apache2ctl graceful 를 잊지 마십시오). 가서 테스트하십시오. 🧪

    좋은 웹페이지 즐겨찾기