TOPシステム開発> Zend Engineの仕組み




Zend Engine
PHPの根幹Zend Engine

第1回:意外と知らないZend Engine

著者:ゼンド・ジャパン  佐藤 栄一   2007/5/18
前のページ  1  2  3
Zend Engineの仕組み

   PHPはスクリプト言語です。そのためPHPのコードはテキストファイルに記載し、Webサーバが管理するディレクトリに配置します。

   実際には実行エンジンが、テキストファイルを翻訳しながら実行します。PHP 3とPHP 4では翻訳と実行方法に大きな差があります。その差はZend Engineの有無によるものです。

PHP 3の実行手順

   PHP 3は、1ステップごとに翻訳と実行を行います。これは、恐ろしく効率の悪い動作です。次のリスト1を見てください。

リスト1:おなじみHello PHPを出力するコード
<HTML>
<BODY>
<?php
for ($i = 1; $i <= 10; $i++)
{
      print "Hello PHP<BR>";
}
?>
</BODY>
</HTML>

   このコードは、4行目にforステートメントがあるので、6行目を10回実行します。このような場合に行単位で翻訳と実行を繰り返すと、6行目を10回翻訳することになります。

   このような単純なロジックでも非効率であることは明白でしょう。これが複雑なビジネスロジックであれば、どんなに時間がかかるかわかりません。

   そのため現在のPHPと比較すると非常に遅いことは火を見るよりも明らかです。


PHP 4以降(Zend Engine)の実行手順

   PHP 4以降には、例外なくZend Engineが組み込まれています。Zend Engineの有無が、絶大な効果を生んでいるのです。Zend Engineは、内部にランタイムコンパイラとエグゼキュータを備えています(図6)。

Zend Engine の動作内容
図6:Zend Engine の動作内容
(画像をクリックすると別ウィンドウに拡大図を表示します)

   実行手順は、次の通りです。

  • WebブラウザからのリクエストをWebサーバが受ける
  • Webインターフェースを通じて、PHPにリクエストが渡される
  • リクエストに対応するPHPコードをディスクから読み込む(テキスト)
  • PHPコードをファイルごと翻訳する(バイナリ)
  • 翻訳済みのPHPコードを実行して実行結果をWebインターフェースに返す
  • Webサーバから実行結果が返される

表1:実行手順

   PHP 3では、複雑なロジックを持ったPHPコードでは、翻訳時間も増大する問題を抱えていました。これに対してZend Engineを搭載したPHP 4以降は、PHPコードをファイル単位で翻訳してから実行するため、ロジックの複雑さに関係なく翻訳処理時間が少なくなります。このため、Zend Engineの搭載によって、非常に高速でPHPコードを実行できます。


Zend Engineによるモジュール化

   Zend Engineには、PHPの基本機能と追加機能を整理する目的も含まれており、増加する追加機能をモジュールとして実装できるように設計されています。

   そのため、PHPには多くの追加モジュールが用意されています。顕著な例の1つがデータベースドライバです。PHP多くのデータベースに対応していますが、それらの機能はモジュール化されて、実装されているのです。


次回

   今回は、PHPの根幹を担っているZend Engineそのものにスポットを当てました。Zend Engineの有効性が理解できたでしょうか。

   さて次回はZend Engineと連携する周辺モジュールについて解説していきます。またPHPを拡張する各種モジュールを紹介します。

前のページ  1  2  3


ゼンド・ジャパン株式会社 佐藤 栄一
著者プロフィール
ゼンド・ジャパン株式会社  取締役   佐藤 栄一
ZendプロダクトおよびMySQLプロダクトを担当。ゼンド・ジャパン株式会社は、PHPのコア技術者が設立したイスラエルZend Technologiesと提携関係にあり、Zendプロダクトの国内総代理店です。ZendプロダクトをベースとしたXAMPによるシステム構築を推進しています。


INDEX
第1回:意外と知らないZend Engine
  Zend Engineとは
  Zend Engineの実装を確認
Zend Engineの仕組み