Image

ナレッジベース → PHP 8設定を使用してWebサイトの速度を向上させる

PHP 8にはパフォーマンスを最適化するための新しい機能があり、スクリプトの実行速度を向上させる新しい機能として、JIT(Just In Time)コンパイルが追加されました。

純粋なインタープリタ言語にはコンパイルステップがなく、仮想マシン上で直接コードを実行します。しかし、PHPを含む多くのインタープリタ言語は、パフォーマンス向上のために軽量なコンパイルステップを持っています。

一方、事前コンパイル型(AOT: Ahead-Of-Time)のプログラミング言語では、コードを実行する前にコンパイルが必要です。

Just In Time(JIT)コンパイルは、インタープリタと事前コンパイルのハイブリッドモデルで、コードの一部または全部を実行時にコンパイルし、開発者が手動でコンパイルする必要がありません。

このオプションは、opcacheモジュールで制御されます。このモジュールはスクリプトの動作を高速化するために設計されており、JITを有効にすることでさらにスクリプトの実行速度が向上します。つまり、2倍の高速化が可能になります。

比較的な速度向上のグラフ。

今回の例では、php 8.3を使用します。

1. モジュールの有効性を確認する

php8.3 -m | grep OPcache

出力に「OPcache」が2回表示されることがあります。1回は一般セクションに、もう1回はZendモジュールセクションに表示されます。これは、モジュールが有効になっていることを意味します。

1.1 無効になっている場合は、有効にする

今回の例では、Debian 12を使用しており、パスは異なる場合があります。

nano /etc/php/8.3/fpm/conf.d/10-opcache.ini
; php opcacheモジュールの設定
; priority=10
opcache.enable=1
opcache.revalidate_freq=0
opcache.validate_timestamps=1
opcache.max_accelerated_files=10000
opcache.memory_consumption=192
opcache.max_wasted_percentage=10
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1
zend_extension=opcache.so
opcache.jit=on

1.2 PHP設定でモジュールを有効にする

nano /etc/php/8.3/fpm/php.ini

設定ファイルの最後に次の行を追加します。

zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.jit_buffer_size=256M
opcache.jit=1235

1.3 fpmを再起動する

service php8.3-fpm restart
service php8.3-fpm status

1.4 モジュールの存在を再確認する

php8.3 -m | grep OPcache

1.5 スクリプトで確認する

次の内容でPHPファイルを作成します。

touch info.php
nano info.php
<?php
phpinfo();
?>

ブラウザでhttp[s]://domain.tld/info.phpを開き、Ctrl + Fで「opcache」を検索して設定パラメータを見つけます。

これらの行は、OPcacheモジュールとJITアドオンが有効であることを示しています。





No Comments Yet