さて、PHPはHTMLの内部に記述するタイプのスクリプト言語と紹介しましたが、それはいったいどのようにして取り扱うのでしょうか。
その答えはとても単純なものです。
HTML文書中に、「<?php」と「?>」で囲まれた部分を作り、そこにPHPプログラムを記述します。つまり「<?php」でPHPプログラムが始まり、「?>」でプログラムを終えればいいわけです。そう言われてもピンと来ないでしょうから、これから順を追ってPHPプログラムの記述と、動作の仕組みをご説明します。
リスト1とリスト2は、それぞれ単純なPHPプログラムを含んだHTML文書です。これらの文書がクライアントから呼び出されると、PHPプログラムの部分が実行され、その実行結果がクライアントに送り返されます。例えば、リスト1の文書が呼び出されると、プログラムの部分が置きかえられてリスト3のようになります。
<HTML> <BODY> <?php print("HelloPHP!"); ?> </BODY> </HTML>
<HTML> <BODY> <?php phpinfo(); ?> </BODY> </HTML>
<HTML> <BODY> Hello PHP!</BODY> </HTML>
リスト1のプログラムは、「Hello PHP!」という文字列を実行結果として返すプログラムですから、プログラム実行後、プログラムの部分は「Hello PHP!」の文字列と置きかえられたわけです。同様にリスト2の文書を呼び出した場合を見てみると、画面1のような結果となります。この場合のHTMLソースは長くなってしまいますので割愛しますが、先ほどと違って、たった1行のプログラムから多くのHTMLが返されたことが見てとれます。
実はリスト2に書かれている「phpinfo()」というのは、インストールされているPHP情報を結果として返す関数なのです。PHPには、このほかにもさまざまな関数が用意されていますから、わずかなソースコードで複雑なHTMLページを作り出すことも可能なのです。それらの多彩な関数については、実践編でいずれ詳しくご紹介していきたいと思います。
ここで肝心なことは、PHPプログラムは「<?php」と「?>」で囲んでHTMLの中に埋め込むことと、プログラムの部分が実行結果とそっくり置き換えられてクライアントに送り返されることです。もちろん、1つのHTMLの中に複数のPHPプログラムを埋め込むことだって可能です。
それはともかくとして、どうすればこのようなことができるのでしょうか。最後にWebサーバ側の仕組みについて説明したいと思います。
冒頭でも簡単に説明しましたが、PHPプログラムを実行する方法はCGIプログラムとして実行する方法と、Apacheモジュールとして実行する方法の2種類から選ぶことができます。この2種類の決定的な違いは動作速度です。CGIプログラムとして実行する場合に比べて、Apacheモジュールとして実行する場合の方が遥かに高速なのです。
その理由は、CGIプログラムとして実行する場合は、PHPプログラムが呼び出されるたびにプロセスが1つ立ち上がることにあります。これに対し、Apacheモジュールとして実行する場合は、Apacheのプロセスの中で実行されるため余分なプロセスを立ち上げる必要はありません。
プロセスを立ち上げることが動作速度に与える影響を説明するために、WindowsでWordに関連付けられたファイルを開く状況を例に挙げてみます。Wordに関連付けられたファイルを開く場合、そのファイルをダブルクリックするなどして直接開く方法と、あらかじめWordを起動しておいてから開く方法が考えられます。
このとき、当然のことですがファイルを直接開こうとすると、Wordが起動するまで待たなくてはなりません。それに対して、Wordがあらかじめ起動していれば、ファイルは起動していなかったときに比べてはるかに速く開きます。このWordが起動するまでの待ち時間こそが、プロセスが起動する時間なのです。PHPをCGIプログラムとして実行する場合、Wordほど時間はかかりませんが、それでも起動時間が動作速度のオーバーヘッドになってしまいます。特に、同時に数百人がアクセスするようなサイトであれば、その差は決して無視できないものになるはずです。
以上のような理由から、PHPを使う場合には、Apacheと組み合わせることがおすすめです。ApacheもPHPも、Linuxだけでなく商用UNIXやWindows NT環境でも動作しますから、Linux以外の環境を使われる方にも一度試してみていただきたく思います。
仕組みの話からは少しそれてしまいましたが、PHPをApacheのモジュールとして設定する場合、PHPプログラムのファイルに付けられる拡張子をApacheに登録することになります。そうすることで、特定の拡張子のファイル(例えば「.php」)はPHPプログラムを含んでいるものとみなされ、呼び出されるとPHPに処理されてクライアントに結果が返されます。簡単に言えばそれだけのことなのですが、実際の作業となれば勝手も違ってきます。
次回はLinuxOSを用意するところから、PHP、Apache、Oracle、PostgreSQLなどが使えるところまで、設定方法を解説していきたいと思います。今回はPHPの概要に留まってしまいましたが、次回も楽しみにしておいてください。
一志達也(ichishi@pochi.tis.co.jp)
株式会社東洋情報システム
Copyright © ITmedia, Inc. All Rights Reserved.