TOP
>
システム開発
> 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)。
図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の仕組み