日経BP社 ブックス&テキスト Online

「マイクロソフト関連書」「Autodesk公式トレーニングガイド」「MOS攻略問題集」「セミナーテキスト」「スクール標準教科書」などの各シリーズ、各種IT関連書籍をご案内するサイトです。

書籍訂正情報

『ひと目でわかるIIS 7.0』をお使いの方へ

(2008年10月7日更新)

●【補足情報】 第4章「13 IISでPHPを利用するには ― ISAPI拡張」について
本書ではIIS 6.0を利用していたユーザーのことを考慮して「ISAPI拡張」を利用する場合の手順を先に紹介しています。PHPをIISで利用する際には「CGI」よりは「FastCGI」を利用したほうが本文中にもあるように効率的な処理が行われるため、パフォーマンスの面において大きなメリットがあります。一方でISAPI拡張を利用する場合にはPHPの拡張ライブラリのすべてが後述のスレッドセーフな構造まで考慮されているかはそれぞれの拡張ライブラリによりますので、総合的にIIS 7.0におけるPHP環境としては、FastCGIが推奨されています。
また、PHPを利用する際に「スレッドセーフ」と「ノンスレッドセーフ」の2種類のバイナリ(インストーラ)を選択することができますが、ISAPI拡張を利用する場合は、この後で説明するように「スレッドセーフ」のバイナリを利用したほうが安全でしょう。FastCGIを選択した場合はどちらでも構いませんが、ノンスレッドセーフのバイナリを選択したほうがパフォーマンスを発揮できる可能性があります。
「スレッドセーフ」とは、簡単に言うと「マルチスレッドで処理を行う(ことができる)環境において複数のプロセスもしくはスレッドが起動したときに、その共有データにアクセスできる、またはアクセスしてもそれに矛盾が生じない設計になっている状態」およびその処理そのものを指します。ISAPI拡張を利用する場合は、複数のPHPのプロセスやスレッドが起動する可能性があるため、スレッドセーフのバイナリを利用したほうが安全でしょう。スレッドセーフのバイナリは、バージョン以外に特に名前が付いていないものです。
逆に「ノンスレッドセーフ」は前述のデータの矛盾などを考慮しない、パフォーマンス優先とも言える構造になっています。FastCGIを利用する場合、PHPのプロセスは再利用されるため、ISAPI拡張のような問題が発生することはありません。そのため、FastCGIを利用する場合はノンスレッドセーフのバイナリを利用したほうが最大限のパフォーマンスを発揮できる可能性があります。ファイル名に「nts」が入っているものがノンスレッドセーフのバイナリです。

以上の理由から、安定性とパフォーマンスの両面を考慮し、FastCGIでノンスレッドセーフのバイナリを利用することを推奨します。


訂正INDEXページへ戻る>>