勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHP8系で追加されたJIT(Just-In-Time)の設定方法

  PHP

PHP8系でOPcacheの拡張機能としてJIT(Just-In-Time)という仕組みが新たに追加されたらしい。これを利用することで実行速度が上がるとのこと。以下にJITの設定方法をメモ。

 

公式サイト

RFC

https://wiki.php.net/rfc/jit

JIT関連の設定リファレンス

https://www.php.net/manual/ja/opcache.configuration.php#ini.opcache.jit

 

導入方法

php.ini変更

サーバにSSH接続し、php.iniのバックアップを取った上で編集する。

cd /etc
cp php.ini php.ini.【日付】
vi php.ini

以下をphp.iniの最終行付近に追記する。

[JIT]
zend_extension = opcache
opcache.enable = 1
opcache.jit = tracing
opcache.jit_buffer_size = 128M

「:wq」で上書き保存し以下で再起動。

systemctl restart php-fpm

phpinfo()で「opcache.jit_buffer_size」が反映されていればOK。

尚、JIT関連の設定は公式ページの通り大半が「INI_SYSTEM」となっているためphp.iniもしくはhttpd.confでの設定になる。つまり.user.iniでは設定できない項目が多い点に注意する。

 

速度比較

単純なループのプログラム

以下のような単純なループのプログラムの場合、JITの有無ではほぼ実行速度は変わらなかった(元々OPcacheは利用している環境)。

for( $i = 1; $i < 100000000; $i++ ){
    
}

PageSpeed Insights

PageSpeed Insightsで当サイトをチェックしたところ以下の通り微妙にパフォーマンスアップに繋がった。

JIT有り

JIT無し

 

その他

WordPressへの影響

以前APCuを導入した際にWordPressのシンタックスハイライト系のプラグインと干渉を起こしたが、今回は特に影響は無さそう。

 

所感

WordPressへの影響は今のところ見当たらないので一安心。あとはメモリの消費具合が気になるが、こちらについてはある程度期間を設けて様子見しないと何とも言えないところ。当面様子見して何か問題があれば追記する。

 - PHP

  関連記事

PHPでis_fileとfile_existsについて

ファイルの存在チェックを行う際に、file_exists関数を 使用していたが、 ...

curlでPOSTデータ送信

ここで使ったcurlだけど補足とか諸々。 ■curlでPOST 並列処理する際に ...

前置インクリメントと後置インクリメント

何かの検索している時に見つけたもの。 前置インクリメントの方が高速とのこと。 ■ ...