# PHP 用の Windows キャッシュ

# はじめに

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 に含まれる 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 セッションに格納するときのパフォーマンスが向上します。

- インストール/設定
  - 要件
  - インストール手順
  - 実行時設定
  - WinCache 統計スクリプト
  - WinCache セッションハンドラ
  - WinCache 関数への切り替え
- WinCache 関数
  - wincache_fcache_fileinfo — ファイルキャッシュにキャッシュされたファイルについての情報を取得する
  - wincache_fcache_meminfo — ファイルキャッシュのメモリ使用状況についての情報を取得する
  - wincache_lock — 指定したキーで排他ロックを確保する
  - wincache_ocache_fileinfo — opcode キャッシュにキャッシュされたファイルについての情報を取得する
  - wincache_ocache_meminfo — opcode キャッシュのメモリ使用状況についての情報を取得する
  - wincache_refresh_if_changed — キャッシュされたファイルのキャッシュエントリをリフレッシュする
  - wincache_rplist_fileinfo — ファイルパス解決キャッシュについての情報を取得する
  - wincache_rplist_meminfo — ファイルパス解決キャッシュのメモリ使用状況についての情報を取得する
  - wincache_scache_info — セッションキャッシュにキャッシュされたファイルについての情報を取得する
  - wincache_scache_meminfo — セッションキャッシュのメモリ使用状況についての情報を取得する
  - wincache_ucache_add — 変数が既にキャッシュに存在しない場合にのみ変数をユーザーキャッシュに追加する
  - wincache_ucache_cas — 変数を古い値と比較して新しい値を代入する
  - wincache_ucache_clear — ユーザーキャッシュの中身全体を削除する
  - wincache_ucache_dec — キーに関連づけられた値を減少させる
  - wincache_ucache_delete — 変数をユーザーキャッシュから削除する
  - wincache_ucache_exists — 変数がユーザーキャッシュに存在するかどうかを調べる
  - wincache_ucache_get — ユーザーキャッシュに格納された変数を取得する
  - wincache_ucache_inc — キーに関連づけられた値を増加させる
  - wincache_ucache_info — ユーザーキャッシュにキャッシュされたファイルについての情報を取得する
  - wincache_ucache_meminfo — ユーザーキャッシュのメモリ使用状況についての情報を取得する
  - wincache_ucache_set — 変数をユーザーキャッシュに追加し、変数が既にキャッシュに存在する場合はそれを上書きする
  - wincache_unlock — 指定したキーの排他ロックを解放する
- Windows でのビルド
  - 要件
  - コンパイルおよびビルド
  - ビルドの検証

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open