|
|
1 2 3 次のページ
|
|
Zend Engineと連係する周辺のモジュール
|
「第1回:意外と知らないZend Engine」では、Zend EngineがPHP実行環境の根幹であることを紹介しました。
第2回目となる今回は、Zend Engineと連係する周辺のモジュールに関して紹介します。これらのモジュールは、PHPの機能を補完や拡充する役割を担います。
|
基本的なモジュール
|
まずは、Zend Engineと連係するベーシックなモジュールから紹介します。図1は、Zend CoreでインストールしたPHP環境の情報です。
図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を導入する必要があります。
図2:Zend GuardとZend Optimizerの役割 (画像をクリックすると別ウィンドウに拡大図を表示します)
中間コード化されたPHPコードは実行コードに翻訳済みなので、デコード処理のみでランタイムコンパイラを介さずにエグゼキュータに渡され処理が実行されます。そのため高速で処理が実行できるのです。
図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によるシステム構築を推進しています。
|
|
|
|