PHP 5.5 の OPcache 拡張機能が私の (共有) Web ホストで有効になっていますが、何らかの理由で、統計で常に「0 ヒット」と報告されます。suPHPと互換性がないためでしょうか?
または、キャッシュ ヒットが 0 である理由について他に提案がある人はいますか?
OPcache は、CLI および基本的な GCI に対して簡単に有効にすることができますが、PHP プロセスが複数のリクエストにわたって持続しない限り、不自然なシナリオ (同じスクリプトが同じリクエスト内で複数回コンパイルされた場合など) でのみキャッシュ ヒットが表示されます。(2 回目以降のコンパイルが失敗するため、そのようなスクリプトはクラスや関数などのグローバルな名前空間エンティティを定義できないため、私は不自然だと言います。)
ほとんどの共有ホスティング構成では、システム管理者は PHP をワンショット php-cgi 実行として構成します。つまり、PHP イメージは、ホストされたアカウント UID 内で要求ごとに開始されます。これには、単純さとセキュリティの利点があります。これには、リクエストごとに PHP イメージの起動オーバーヘッドが発生し、イメージのシャットダウン時に mmap された SMA が破棄されるため、コンパイルされたスクリプトがリクエストごとに保持されないため、パフォーマンスが低下するという欠点もあります。
OPcache が機能するためには、リクエストのバーストに耐えられる PHP プロセスが必要です。一部の mod_fcgid パターンはこれをサポートしていますが、構成の詳細がなければ、これ以上の操作はできません。ごめん。
悲しいことに、現在 suPHP と互換性のある opcache 拡張機能はないと言われました。
LiteSpeed の suEXECはオペコード キャッシングをサポートできますが、標準の「ワーカー」モードではなく、「デーモン」モードまたは「プロセス グループ」モードでのみサポートされます (説明はこちらを参照してください)。
そのため、cPanel または INI 経由で opcache を有効にできる場合でも、PHP プロセスが終了して RAM が解放されるため、キャッシュ ヒットは発生しません。とりあえず運が悪いようです。