OPcache


標準のOPcache拡張を強くお勧めします。 Moodle 2.6以降、これはPHP開発者によって公式にサポートされている唯一のソリューションです。利点は、パフォーマンスの向上とメモリ使用量の大幅な削減です。ただし、オペコードキャッシング拡張機能(OPcache、eAccelerator、およびAPCを含む)は、suPHP(WHM / cPanel Linuxサーバーのデフォルト)などの一般的な種類の高セキュリティPHPハンドラーを使用するように構成されたサーバーとは互換性がありません。

インストール

OPcacheエクステンションはPHP 5.5.0以降の一部として配布されています。それは、元の名前ZendOPcacheの下でPECLからのより古い安定版PHPリリースにも利用可能です。

注:PHP 5.3または5.4を使用している場合は、OpCacheに関するEnvironment Checkメッセージを無視しても問題ありません。それにもかかわらず、オペレーティングシステム/ PHPをアップグレードして5.5 以降にすると便利かもしれません 。 PHP 5.2および5.3ではさまざまな問題が説明されているため、PHPをアップグレードすることがより簡単な解決策であることがわかりました。

設定

PHP.ini設定:

 [ opcache ]
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60

; Moodleに必要
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 0

; Moodleで何かがうまくいかない場合
; opcache.revalidate_path = 1;インクルードパスに関する問題を修正する可能性があります。
; opcache.mmap_base = 0x20000000; (Windowsのみ)OPcacheがイベントID 487でクラッシュするのを修正

; Moodle 2.6以降で実験的
; opcache.fast_shutdown = 1
; opcache.enable_cli = 1; CLIcronをスピードアップ
; opcache.load_comments = 0;メモリ使用量が少なくなる可能性があり、アドオンや他のアプリとの互換性がない場合があります。 

Windows以外のプラットフォームを使用している場合は、php.iniに追加してzec_extension設定を使用してOPcacheエクステンションをPHPにロードする必要があります。

 zend_extension = /full/path/to/opcache.so 

IISを使用する場合は、PHP 5.5が必要です。また、php.iniファイルのExtensionListセクションにopcacheの拡張子を追加する必要があります。 PHP 5.3と5.4では[1]とは別にバイナリをダウンロードすることができ、php.iniにモジュールdllへの絶対パスを入力する必要があります。

 [ ExtensionList ]
...
zend_extension = php_opcache.dll 
メモリ消費

投稿者PHPのOPCache拡張レビュー

  • メモリセグメントのサイズは、opcache.memory_consumption INI設定(メガバイト)を使用して指定できます。サイズを大きくして、スペースをあきらめないでください。共有メモリスペースを使い果たすことは絶対にありません。そうすると、プロセスをロックすることになります。後でそれに戻ります。
  • 必要に応じて共有メモリセグメントのサイズを設定してください。PHPプロセス専用の本番サーバーでは、PHP用に数十ギガバイトのメモリを束ねることを忘れないでください。 1Gb(またはそれ以上)の共有メモリセグメントを持つことは珍しいことではありませんが、最新のアプリケーションスタックを使用する場合、別名フレームワークベースで依存関係が多い場合など、少なくとも1Gbの共有メモリセグメントを使用します。メモリ。

そのことを念頭に置いて、opcache.memory_consumptionをいっぱいにならないように十分な値に設定し(RAMの使用量が許す限り)、その値を最適なサイズに調整するようにOPCacheを監視します。標準的なMoodle 3.5のPHPファイルの合計サイズは約90MBなので、この値をそれより大きく設定するのは良い考えです。プラグインのPHPファイルとMoodleDataフォルダの言語ファイル(言語パックファイル...)も考慮に入れられるので、これらの値はインストールごとに異なる可能性があります。 Moodleのインスタンスが複数ある場合は、その値にインスタンス数を掛けてください。

ヒント:Linuxを使用している場合は、このコマンドを使用してフォルダーのPHPファイルの合計サイズを知ることができます。

 ./ -type f -name "* .php" -printf "%s \ n"を見つけてください。 gawk -M ' { t + = $ 1 } END { print t } ' | numfmt --to = si 
max_accelerated_files

投稿者php.net max-accelerator-files

  • OPcacheハッシュテーブル内のキー(したがってスクリプト)の最大数。使用される実際の値は、設定値以上の素数の集合{223、463、983、1979、3907、7963、16229、32531、65407、130987}の最初の数字です。最小値は200です。最大値はPHP <5.5.6では100000、それ以降のバージョンでは1000000です。

Moodle 3.5にはほぼ10,000個のphpファイルが含まれているので、これに対応するためにopcache.max_accelerated_filesを10000に設定することをお勧めします(上記の説明に従って、16229が実際に使用されます)。 Moodleのインスタンスが複数ある場合は、その値にインスタンス数を掛けてください。

PHPファイルの総数が16229を超えるように追加のプラグインが多数インストールされている場合は、次にmax_accelerated_filesに最適な値を使用する必要があります。ヒント:Linuxを使用している場合、このコマンドを使用してMoodleの合計PHPファイルを知ることができます。

 ./ -type f |を見つけます。 grep -E "。* \。php $" | sed -eの/.* \  \。 [ a-zA-Z0-9 ] * \  $ / \ 1 / '|並べ替え| uniq -c | sort -n 

関連情報

フォーラムディスカッション: