このページの本文へ

Webアプリケーション構築用スクリプト言語「PHP 4.0.0」リリース(改訂版)

2000年05月26日 13時17分更新

文● 沖中弘史

  • この記事をはてなブックマークに追加
  • 本文印刷
当記事公開当初、「PHP 3.x」でもスクリプトエンジンの「Zend Engine」が使用されている旨の記述がありましたが、実際は「PHP 4.0.0」で初めて採用されたものです。本文を訂正するとともに、より多くの情報を付加し、ここに「改訂版」として公開いたします

 Webアプリケーション構築用スクリプト言語「PHP 4.0.0(以下PHP4)」がリリースされた。

 「PHP」は、Webサーバ「Apache」のモジュールとして使用されるHTML埋め込み型のスクリプト言語(CGIにより実行することもできる)。XML、IMAP、LDAPなどに対応しており、PostgreSQL、Oracle、Sybaseといったデータベースと連携したWebアプリケーションの作成などに用いられる。ライセンスはオープンソースライセンスのひとつである「The PHP License」(新たに採用されたスクリプトエンジン「Zend Engine」の部分は「QPL(The Q Public License Version 1.0)」)。

 また、開発当初は「PHP/FI」という名称で、「Personal Home Page Tools」の略とされていたが、現在は「PHP: Hypertext Preprocessor」となっている。

 「PHP4」の最大の特徴は、「PHP」で利用されるスクリプトエンジンが、イスラエルのZend Technologies(PHP開発チームのコアメンバーが設立)の「Zend Engine」に変更されたことにある。この変更により、大幅なパフォーマンスの向上が得られている。

新スクリプトエンジン「Zend Engine」の主な特徴は以下のとおり。

  • 実行時にコンパイルすることで、大規模アプリケーションにおいても速度向上が期待できる(従来のPHPは逐次実行)
  • 参照されなくなったオブジェクトを、スクリプト終了時ではなく不要になった時点で開放することでメモリの利用効率を上げる「リソース管理機能」により、メモリ節約と、速度向上、リソース管理の自動化(ユーザーがリソースの開放を明示的にコーディングしなくてもよい)を実現
  • マルチスレッド化したことで、IIS(Windows NT/2000上)やAOL ServerなどのネイティブAPIにも対応(従来は、Apacheのモジュールとしてしか組み込めなかった)
  • アドオンによる機能拡張が可能。今後リリースされる予定のアドオンとして、イスラエルのZend Technologiesによる商用ベースの「Zend Optimizer」、「Zend Compiler」、「Zend Cache」などがある。「Zend Optimizer」は現在ベータ版がではあるが、かなりの速度向上が得られるという。そのほかのものについては、2000年末のリリース予定となっている

また、「PHP4」のZend Engine以外の主な変更点は以下のとおり。

セッション管理(※1)機能

  • PHP3では、PHPlibなどのクラスライブラリを使うか、一から書く必要があったが、PHP4では標準的な機能として提供される
  • セッションデータを目的に応じ、ファイルのほか共有メモリや、RDBMS等に保存できる

言語仕様の強化

  • PHP3上位互換
  • Perlの「ヒアドキュメント」と同等な構文の追加
  • foreach文の追加

標準クラスライブラリ「PEAR(PHP Extension and Add-on Repository)」の採用

  • 従来もPHPlibなどのクラスライブラリがあったが、PerlのCPANなどのように、標準化したクラスライブラリを整備していく。現状ではPEARには、DB (DBMSアクセスの抽象化クラス)、FILE (ファイル操作)がある

そのほかの変更点

  • 外部の拡張ライブラリの組み込みを、共有ライブラリによっても行なうことができるようになった
  • PHP拡張モジュールを作成するためのAPIが拡張された。普及しているPHP拡張モジュールの多くは、すでにこの新しいAPIに変更されている
  • PHPの設定ファイル(php.ini)のフォーマットが改良され、PHPの設定がより簡単にできるようになった。また、Apacheのモジュールとして動作する場合は、PHPの設定ファイル(php.ini)のすべての設定を、Apacheの設定ファイルからも変更することができる。また、この設定変更は、Apacheが動作中でも可能
  • 「automake」、「libtool」などを用いることで各種UNIX上でのコンパイルが容易になった
  • デバッグの際などにスクリプトを見やすくするために、構文に応じた色づけなどがなされたHTMLを出力する「Syntax highlighter」が、より速く、よりコンパクトなHTMLを出力するようになった
  • 出力のバッファリングがサポートされた
※1 一般的には、ユーザーがWebサイトを訪れてから、そのWebサイトを離れるまでが一回のセッションとされる。HTTPでは、ユーザーがWebサイトを訪れても各ページごとに接続が切れてしまうため、あるページから別のページに移ったときに、それぞれのページを見ていたのが同じユーザーかどうかや、移った先のページで、移る前に見ていたページを特定することなどができない。そのため、PHPや、ColdFusion(CFML)などのWebアプリケーション構築用のスクリプト言語では、クッキーを使用したり、URLにセッションIDを埋め込むなどして、セッションを特定している。セッションが特定されることで、複数のページでユーザーに関連づけられたデータを保持できるようになる。
 このセッション管理の機能はWebアプリケーションでは、必須の機能といえる。たとえば、ショッピングサイトなどで、ユーザーが閲覧したページを記録することによってユーザーの嗜好を把握、記録したデータを元に、そのユーザーの嗜好にあったページを表示するというようなことは、セッション管理によって実現されている。

 また、従来バージョンの「PHP3」には、「PHP3国際化チーム」による日本語に対応した国際版も存在し、最新バージョンは3.0.15となっている。

 「PHP3」の国際化パッチは、フォームから送られて来る文字列など、HTTP経由で入出力される文字コードや、スクリプトで使われる文字コードを自動判別することで、コーディングの負担を大幅に軽減している。これは、スクリプトエンジンに対するパッチにより実現されている。

 今回、「PHP4」でスクリプトエンジンが変更されたことで、従来の国際化パッチをすぐに適用することはできない。そのため、「PHP4」の日本語関連の機能は、国際化プロジェクトメンバーの塚田氏提供の、

  • 日本語コード変換、日本語メール送信の拡張モジュール(PHP3と同じコードベースのもの)
  • コード変換の拡張モジュール(glibc2.xのiconvベース)
  • 日本語対応の正規表現の拡張モジュール
  • Namazu検索用の拡張モジュール

が使えるというのが現状となっている。

 PHP国際化プロジェクト「PHP3国際化チーム」では、本家「PHP」への国際化コードのマージに向けて活動していく予定だが、人手が足りないので、国際化に協力できる人を募集しているという。興味のある方は「PHP INTERNATIONALIZATION」のページをご覧いただきたい。

カテゴリートップへ