// はじめに

IISPHP環境として動作させる上でスレッドセーフで無いライブラリの利用にISAPI拡張が適していないなど多くの要望がIISの開発チームには寄せられていたといいます。IISチームはこの点を重大に捉え、PHPをご利用になっている方々向けの支援を強化するためにZend Technologies 社との協業をしたり、IISに手を入れたりと色々と動きだしました。

// PHP動作環境の構築

ここではWindows XP SP2での方法を書きます。Vista2008用はもう一つのフォーラムで取り上げることにします。

また、ここでは www.php.net で提供しているPHPバイナリを利用します。Zend社のCoreはインストーラもあり、さらに簡単にできますが、敢えてここではIIS開発チームがやっている通りの方法で書いてみます。

1.    IIS5.1を用意する
インストールはプログラムの追加と削除、Windowsコンポーネントの追加と削除から行います。
少なくともインターネット インフォメーション サービス(IIS)にチェックを入れる。

http://localhost にアクセスしてきちんとIISが動作していることを確認します。

2.    FastCGIを入手する
WindowsXP
ではインストールが必要です。
http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1300

※まだ最終製品版ではありませんので、注意。

3.    FastCGIをインストールする
まずは展開します。ここではc:\fcgiに展開したものとして進めます。
コマンドプロンプトを開き、
cd c:\fcgi
3-1. FastCGI
をインストールする

 cscript fcgisetup.js /install
3.2. php
拡張子のマッピングを行う

 cscript fcgisetup.js /r /add c:\php\php-cgi.exe PHP

4.    PHPバイナリを入手する
http://www.php.net/downloads.php へアクセスいただき、FastCGIでの動作を想定してノン スレッドセーフなバイナリのZipを入手します。これを書いている現時点では 5.2.4 があります。

5.    PHPバイナリを展開する
ここではC:\PHPに展開しましょう。

6.    PHP.iniを作成、編集する
php-dist.ini
php.ini としてコピーする。
extension_dir c:\php\ext に変更する。

7.    動作確認用のPHPファイルを作る
phpinfo
関数がいいでしょう。文法は無視してます、ご容赦。
メモ帳でgogo.php という名前で下記だけ書いたテキストファイルを作ります。
<?php phpinfo() ?>

8.    実際にアクセスしてみる
http://localhost/gogo.php

Windows XP環境でのPHPセットアップは従来インターネットを探すとISAPIを用いる方法が掲載されていましたが、今はFastCGIで環境をお作りいただけるようになりましたのでこちらをお勧めします。

Windowsではプロセスを実行単位としてさらにその中でスレッドが複数動く構造になっていますが、PHPの動作環境としてISAPIで動作させるとPHPのアプリケーションはインプロセスすなわち、それぞれスレッドという空間で動作する仕組みになります。この場合、PHP関連のライブラリで1つのプロセス内の複数スレッドで動作することを想定したつくりになっていないと問題が発生する原因になります。一方でCGIの形態で動作させることも可能で、この場合には今度Windows環境ではパフォーマンスに大きく影響のあるリクエスト毎のプロセス起動というコストの高いオーバーヘッドを抱えてしまい、実行スピードに影響が出ます。この状況から長い間、PHPを利用している方々からIISの開発チームにはちゃんと対応してという声が多く寄せられていました。今回 まだ製品版ではありませんが、提供されたFastCGI対応モジュールはこの二つの問題を解決するものです。FastCGIはプロセスを一旦起動するとそれを次回の利用のためにプールする仕組みで動作しますので、後者の起動オーバーヘッドがない、プロセス毎に動作しますのでスレッドセーフでない点もクリアになり、今までよりも安定して速い環境を提供できるようになります。

実際のサイトを設定するにはindex.php を既定のドキュメントに追加するとか色々あると思いますが、その辺も含めてまた書きます。