#OPcacheとは
OPcacheとはコードをコンパイルし、共有メモリへ保存しておく仕組みのことです。
PHPはインタプリタですが、この仕組みによってリクエストごとにスクリプトを読む必要がなくなり、パフォーマンスの向上が期待されます。
#インストール
本記事ではWindowsのphp 7.2.4で設定を行っています。あらかじめご了承ください。
##準備
特になし(さすがにPHPは入ってますよね?)
##設定
php.iniで以下の設定を記述します。
# Linux,Macの場合
zend_extension=/[それぞれのPHPのextensionのパス]/php_opcache.so
# Windowsの場合
zend_extension=C:\[それぞれのPHPのextensionのパス]\php_opcache.dll
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
設定内容はphp.netの推奨設定で推奨される一般的設定です。
オプション | デフォルト | 意味 |
---|---|---|
opcache.enable | 1 | キャッシュを有効にする |
opcache.enable_cli | 0 | CLI版のキャッシュを有効にする |
opcache.memory_consumption | 64 | 使用される共有メモリのサイズ |
opcache.interned_strings_buffer | 4 | internされた文字列を格納されるために使用されるメモリ量 |
opcache.max_accelerated_files | 2000 | スクリプトの最大数最小値は200 |
opcache.revalidate_freq | 2 | 更新時にタイムスタンプをチェックする頻度。 opcache.validate_timestampsがデフォルトで有効なのでチェックされる |
opcache.fast_shutdown | 0 | それぞれに割り当てられたブロックを開放しない高速シャットダウンシーケンスが使用される |
変更可能範囲と他のオプションについてはOPcacheの実行時設定を参照してください。
##確認
php -v で確認します。
図のように表示されればOpache導入成功です。めっちゃ簡単!
##検証
せっかくなので速さ検証してみます。
hello worldを返すだけのphpプログラムを作成してみたので、ベンチマークとってみます。
ab -c 100 -n 100
(100人が同時に1リクエストした場合を想定)で検証したいと思います。
うーん、まぁ全体的に速くなってるけどあんまり違い分からないな...。
Laravel5.6プロジェクトはどうなるかも見てみます。
ちょっぱや!倍近く速くなってる!
#参考