 |
|
前のページ 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によるシステム構築を推進しています。
|
|
|
|