Blogブログ

2007-1-17 ITのお話

PHP の技術

たまにはちょっと技術の話を。

弊社は主に組み込み系の開発をやっています。
組み込みは細かいこと(リソース管理の最適化や処理速度)に気を使う反面、ほぼ全ての情報を自己管理できます。一方、WEB 系の開発は既存モジュールの組み合わせ、という側面が強くあまり私の(個人的な)好奇心がそそられません。

それでも J2EE、LAMP など一通りの知識はありますし、実装もしています。

しかし大規模なシステム構築はほとんどしてきませんでした。やはり興味が薄かったので。ただ、現在懇意にさせていただいている顧客の要望で WEB システム開発をお手伝いさせていただいています。

その会社さんよりWEB サーバの高速化(リソースの高効率利用)を図りたいという要望があり、PHP に関して少し調べてみました。PHP と一般に言われますが、LAMP システム上で動作する場合、PHP の本体は Zend Engine を指します。

で、その Zend Engine ですが、Apache に PHP の接続要求があった場合に毎回 PHP ファイルをパースするようです(ちょっとびっくり)。Zend Engine の処理は以下の二つから成ります。

 ・ランタイムコンパイラ(パーサ)
 ・エグゼキュータ(実行エンジン)

さすがに毎回テキストコンテンツをパースするのはシステム負荷が高すぎるだろうと思い、なにか逃げ道があるはずだ、と今回の調査を行いました。しかしPHP はほとんどの場合そのまま使うようですね。開発効率の高さと引き換えに実行速度が犠牲になっているようです。

先に「ほとんど」と言った内容ですが、Zend 社が出しているコンパイル結果キャッシュモジュール(Zend Platform)や、中間コードを実行するモジュール(Zend Guard)があるようです。ただし、どちらも有償。

ここまで広がった PHP ですが、まだまだ改良の余地がありそうですね。
そう考えるとやはり Java の生き残る道は残りそうです。