apc.enable_cli
APC を CLI モードでアクティブにするかどうかを制御するのドキュメントには、 (引用)と記載されています。
主にテストとデバッグ用です。これを設定すると、PHP の CLI バージョンで APC が有効になります。通常の状況では、CLI リクエストごとに APC キャッシュを作成、設定、および破棄することは理想的ではありませんが、さまざまなテスト シナリオでは、PHP の CLI バージョンで APC を簡単に有効にできると便利です。
おそらく、APC はオペコードをメモリに保存しますが、PHP 実行可能ファイルがスクリプトの最後で終了すると、そのメモリは失われます。スクリプトの実行間で保持されません。
したがって、APC の opcode-cache は CLI モードでは役に立ちません。PHP の実行可能ファイルが起動されるたびに、PHP がソースをオペコードに再コンパイルする必要があるため、何も最適化しません。
実際、APC は「最適化」しません。PHP スクリプトを実行する標準的な方法は次のようになります。
- ファイルを読み取り、オペコードにコンパイルします
- オペコードを実行する
APC が行うことは、オペコードをメモリに格納することなので、PHP スクリプトの実行は次のようになります。
- オペコードをメモリから読み取る(ソースコードをコンパイルするよりもはるかに高速)
- オペコードを実行する
ただし、これは、オペコードを格納するためのメモリ内の場所が必要であることを意味します。PHP を Apache モジュールとして実行する場合、Apache はそのメモリ セグメントの永続化を担当します... PHP を CLI から実行する場合、そこにメモリ セグメントを保持するものは何もないため、PHP の実行の最後に破棄されます。
(正確な仕組みはわかりませんが、少なくとも原則としては、私の言葉があまり「技術的」でなくても、そのようなものです ^^ )
または、「最適化」とは、構成ディレクティブapc.optimizationのように、オペコード キャッシュ以外のものを意味しますか? もしそうなら、これは APC 3.0.13 で削除されました。