理論編:PHPについて知ろう:PHP4で作るWeb-DBシステム(1)(2/2 ページ)
スクリプトを記述するだけの簡単なプログラミングで、Web対応の高速なデータベースアプリケーションを実現する手法としてPHPが急速に注目を集めている。しかもデータベースはオープンソースのPostgreSQLだけでなく、Oracleなどの商用データベースも扱える。ここでは、5月にバージョンアップしたばかりのPHP4によるWeb-DBシステム構築法を紹介しよう。
プログラミングの実際
さて、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.
関連記事
- 特集:オブジェクト指向に生まれ変わるPHP5[前編]
現在開発中のPHP5は、オブジェクト指向機能が大幅に強化される。次世代PHPはどのような言語になるのか? - 特集:Windows開発者に贈る Kylixの全貌
注目の開発環境「Borland Kylix」がいよいよ見えてきた。ここに、英語版の発売を目前に控えたKylixの機能やアーキテクチャを紹介しよう - 特集:Kylixプログラミング作法
GUIの構築やコンポーネントとコードの関係、 Object Pascalの仕様など。 これらの点を、実際に日本語ベータ版でプログラミングしながら分かりやすく解説 - 連載:PHP4で作るWeb-DBシステム(全5回)
PHPはWebサーバとデータベースを結びつけるものだ。そのためPHPでの開発を開始するには、OS、データベース、Webサーバ、そしてPHPと、多くのソフトウェアのインストールを行う必要がある - 連載:ステップ・バイ・ステップ・シェルスクリプト(全7回)
Linuxの中でシェルスクリプトはネットワークの設定、デーモンの起動など重要な役割を果たしている。この連載では、シェルスクリプトで実用的なプログラムを組むことを目標にして、シェルの基本的な知識を説明する - 連載:Kylix 3とDB2で作るWebサービス・アプリ(全5回)
Kylix 3とDB2 V8.1を使って、Webサービス・アプリを作ってみよう。トライアル版も用意されているので、実際に試しながら読んでほしい - プログラミング関連記事一覧