TOPシステム開発> Zend Engineと連係する周辺のモジュール
Zend Engine
PHPの根幹Zend Engine

第2回:モジュールによる高速化と機能拡張

著者:ゼンド・ジャパン  佐藤 栄一   2007/5/28
1   2  3  次のページ
Zend Engineと連係する周辺のモジュール

   「第1回:意外と知らないZend Engine」では、Zend EngineがPHP実行環境の根幹であることを紹介しました。

   第2回目となる今回は、Zend Engineと連係する周辺のモジュールに関して紹介します。これらのモジュールは、PHPの機能を補完や拡充する役割を担います。

基本的なモジュール

   まずは、Zend Engineと連係するベーシックなモジュールから紹介します。図1は、Zend CoreでインストールしたPHP環境の情報です。

Zend Engineと連係する基本的なモジュール(phpinfoの出力例)
図1:Zend Engineと連係する基本的なモジュール(phpinfoの出力例)
(画像をクリックすると別ウィンドウに拡大図を表示します)

   図1の環境では、Zend Engine以外に表1のようなモジュールがロードされています。これらのモジュールは、Zend Engineと連係してPHPを強化するものです。

モジュール名 概要
Zend Core v2.0.0 PHP環境の管理とアップデート
Zend Extension Manager v1.2.0 PHPバージョンに対応したモジュールのロード
Zend Optimizer v3.2.4 PHPコードの最適化およびデコード
Zend Debugger v5.2.5 サーバデバックのエージェント

表1:Zend Engine以外のモジュール


Zend Extension Manager

   Zend Extension Managerは、PHPのバージョンに応じて異なるモジュールをロードする機能を提供します。

   PHPはバージョンに応じて仕様が異なっており、連係するためのモジュールもバージョンごとに変更する場合があります。特にZend Engineと密接に連係するモジュールは大きく影響を受けます。


Zend Optimizer

   Zend Optimizerは、大きく分けて2つの機能を提供しています。

   1つ目は、PHPコードの最適化を実施し、効率化をはかる機能です。Zend Optimizerを導入した環境では、数%程度の高速化を実現できます。特にループや条件分岐を多用したPHPコードに効果があります。

   もう1つの機能は、中間コード化、暗号化および難読化したPHPコードを実行する機能です。PHPコードのセキュリティソリューションZend Guardにより、通常のPHPのソースコードを3種類の形式にエンコード(変換)します。

状態 概要 Zend Optimizer
テキストファイル PHPコードの内容を簡単に参照可能 不用
中間コード化
+
暗号化
翻訳済みのコードなので、高速に実行可能 必要
中間コード化
+
暗号化
+
難読化
ユーザが作成した関数名やクラス名を抽象的な文字に変換するので、処理内容を推測できない 必要

表2:Zend GuardのPHPコード変換概要

   なお、これらのエンコード済みPHPコードを実行するには、PHP環境にZend Optimizerを導入する必要があります。

Zend GuardとZend Optimizerの役割
図2:Zend GuardとZend Optimizerの役割
(画像をクリックすると別ウィンドウに拡大図を表示します)

   中間コード化されたPHPコードは実行コードに翻訳済みなので、デコード処理のみでランタイムコンパイラを介さずにエグゼキュータに渡され処理が実行されます。そのため高速で処理が実行できるのです。

Zend Engine内の実行手順
図3:Zend Engine内の実行手順
(画像をクリックすると別ウィンドウに拡大図を表示します)


Zend Debugger

   Zend Debuggerは、統合開発環境Zend Studioとネットワーク上で連係して、デバックを行うためのモジュールです。

   開発者は手元のPCで実行しているZend Studioから、PHPサーバ上で実行しているPHPコードの実行を制御(ブレイク、ステップ実行など)することが可能です。ブレイク中は、変数に格納された値の参照や設定、PHPコードコールトレースなどの実行状況の参照が可能です。

   またZend DebuggerはPHPコードの実行時間の統計を実施するプロファイラ機能も提供します。プロファイラでは、複数のPHPコードから1つのWebページを作成する処理でも、各PHPコード別の実行時間の割合をグラフで表示することができます。

プロファイラのレポート例
図4:プロファイラのレポート例
(画像をクリックすると別ウィンドウに拡大図を表示します)

   またユーザ関数やクラスごとの実行時間を、実行順序の通りに表示することも可能です。

プロファイラのレポート例(関数別統計)
図5:プロファイラのレポート例(関数別統計)
(画像をクリックすると別ウィンドウに拡大図を表示します)

1   2  3  次のページ


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


INDEX
第2回:モジュールによる高速化と機能拡張
Zend Engineと連係する周辺のモジュール
  Zend PlatformによるPHP環境の拡張
  FastCGIによるWindowsサーバ環境でのPHP高速化と安定化