はじめに

Windows Cache Extension for PHP は、PHP のアクセラレータです。 Windows および Windows サーバー上での PHP アプリケーションの動作速度を向上させます。 Windows Cache Extension for PHP を有効にして PHP エンジンに読み込むと、 PHP アプリケーションのコードに一切手を加えずに恩恵を受けることができます。

Windows Cache Extension には 5 種類のキャッシュが含まれています。 それぞれのキャッシュ型の目的と利点を以下にまとめました。

  • PHP Opcode キャッシュ - PHP はスクリプト処理エンジンです。 テキストや PHP の命令からなるデータストリームを入力として読み込み、 別の形式 (通常は HTML 形式) のデータストリームを生成します。 つまり、ウェブクライアントからのリクエストを受け取るたびに、 PHP エンジンが PHP スクリプトの読み込みとパース、コンパイルそして実行を行っているわけです。 読み込み、パースそしてコンパイルはウェブサーバーの CPU やファイルシステムに負荷をかけ、 PHP ウェブアプリケーション全体のパフォーマンスに影響を及ぼします。 PHP バイトコード (opcode) キャッシュを使うと、コンパイル済みのスクリプトのバイトコードを共有メモリに置きます。 同じスクリプトが再びリクエストされたときには、PHP エンジンはこのバイトコードを再利用します。

    opcode キャッシングのサポートは、Wincache 2.0.0 で削除されました。 opcache を所有したいすべてのユーザーは、PHP 5.5.0 以降 PHP に含まれる OPcache 拡張を使用すべきです。

  • ファイルキャッシュ - PHP opcode のキャッシュを有効にしたとしても、 PHP エンジンはファイルシステム上のスクリプトファイルにアクセスしなければなりません。 PHP のスクリプトをリモートの UNC ファイル共有に置いている場合には、 ファイル操作はパフォーマンス面での深刻なオーバーヘッドとなります。 Windows Cache Extension for PHP にはファイルキャッシュ機能が組み込まれており、 PHP スクリプトファイルの内容を共有メモリに格納することができます。 これにより、PHP エンジンからのファイルシステム操作の量を減らすことができます。

  • ファイルパス解決キャッシュ - PHP スクリプトでは、 相対ファイルパス指定によるファイル操作やインクルードが頻繁に発生します。 このとき、PHP エンジンは相対パスを絶対パスに変換しなければなりません。 PHP のアプリケーションで、相対パス指定した PHP ファイルへのアクセスが多くなると、 パスの解決がアプリケーションのパフォーマンスに大きな影響を及ぼします。 Windows Cache Extension for PHP のファイルパス解決キャッシュを使うと、 相対パスと絶対パスの対応を保存しておくことができます。 これにより、PHP エンジンが行わなければならないパス解決の量を減らすことができます。

  • ユーザーキャッシュ (バージョン 1.1.0 以降で使用可能) - ユーザーキャッシュ API を使うと、PHP スクリプトから共有メモリキャッシュを使うことができます。 PHP のオブジェクトや変数をユーザーキャッシュに格納し、 別のリクエストでそれを再利用することができるのです。 これは PHP スクリプトのパフォーマンスを向上させ、 複数の PHP プロセスからのデータへのアクセスを共有することができます。

  • セッションハンドラ (バージョン 1.1.0 以降で使用可能) - WinCache セッションハンドラを使うと、PHP のセッションデータを共有メモリキャッシュに置くことができます。 セッションデータの読み書き時のファイルシステム操作が不要になり、 大量のデータを PHP セッションに格納するときのパフォーマンスが向上します。