勉強したことのメモ

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で簡単にカレンダーを生成できるライブラリ「PHP Calendar」の利用方法
PHPで簡単にカレンダーを生成できるライブラリ「PHP Calendar」の利用方法

PHPでカレンダーを描写したいということがたまにある。今までバニラPHPで書いて ...

PHPバージョンアップの際に削除された関数(MySQL関数等)を使う方法
PHPバージョンアップの際に削除された関数(MySQL関数等)を使う方法

PHP5系で制作されたシステムを8系でも動くようにリプレイスしてほしいという案件 ...

PHPでダミー画像(プレースホルダー画像)を表示する「PHP-Dummy-Image-Generator」の利用方法
PHPでダミー画像(プレースホルダー画像)を表示する「PHP-Dummy-Image-Generator」の利用方法

先日JavaScriptでダミー画像(プレースホルダー画像)を表示する「Hold ...

formにGoogle reCAPTCHA v3を組み込み、PHPでスコア判定する方法
formにGoogle reCAPTCHA v3を組み込み、PHPでスコア判定する方法

だいぶ前にGoogle reCAPTCHA v2をformに組み込むという記事を ...

PHPのarray_map / array_walk関数について
PHPのarray_map / array_walk関数について

他社が作成されたPHPのソースコードを拝見しているとarray_mapという見慣 ...