RECENT POSTS

TWITTER UPDATES

PHPを高速化する!(PHP Accelerator)

Posted by Kazu On 1月 - 16 - 2006 1 COMMENT

PHPの表示を格段に高速化させるという素晴らしいフリーのソフトウェアがあります。ionCube PHP Acceleratorです。


PHP化していて、自分のサーバやレンタルサーバなどであれば、導入しない手はない!ということで導入手順をば。


PHPアクセラレータとは

以下ionCube PHP Encoding Accelerationより引用

PHPAは無料で提供されており、同様の非商用製品の中でも最高の性能を発揮しているのみならず、商用で提供されている類似商品とも十分互角の性能を有しております。PHPAを利用すると、一般的には5倍の速度向上が得られ、Smartyベースのアプリケーション上では10倍近くもの速度向上が得られると確認されております。米国Yahoo!本社もPHPAが理想的なPHPスクリプトキャッシングソリューションであると認識し、採用して下さいました。また、世界のトップアーティストであるマドンナの公式サイトmadonna.comでもPHPAが採用されています。


何故高速化されるのか、の説明は、、

PHP エンジンは、PHP スクリプトがアクセスされる度にスクリプトファイルを開き、読み込み、構成要素を解析し、ファイルの中身をバイナリ形式にコンパイルしなければなりません。この作業はページを表示するためにかかる時間全体の、かなりの割合を占めることになります。これは、同時に I/O の動作にも影響を与える上、メモリーの占有率も高くなるため、結果的には時間を浪費することになってしまいます。


しかし実際には、多くの PHP スクリプト自体は常に変更されている訳ではなく、数週間、数ヶ月、あるいは何年もの間スクリプト自身は変更されないものです。そのため、ionCube PHP Accelerator では、更新されていないスクリプトを自動的に割り出し、共有メモリ内にコンパイルされたスクリプトをキャッシュすることによって、大変素速い動作へと結び付けているのです。スクリプトの出力をキャッシングするのではなく、スクリプト自体をキャッシュするため、スクリプトは完全なまま補完されます。しかもスクリプトに変更があった場合には、新しいバージョンを自動的にキャッシュし、ユーザーは無意識に最速なスクリプトを実行することができます。


ionCube PHP Accelerator では、PHP が行う以下の作業を省略できます:


ソースコードの読み込み

ソースコードの構成要素の解析

コンパイルコードの作成

メモリーの複製作業

ディスクに関連した作業

一度スクリプトの実行が完了すれば、新しいバージョンや修正されたバージョンのコンパイル済みのスクリプトは、後で再利用をおこなう為、直ちにディスク内にキャッシュされます。これにより、素早い実行速度が保障されますが、同時にスクリプトは共有メモリの中にも残るため、性能の最大化が図られます。


動作環境

お使いのWEBサーバがでApache1.3または2.0系で動作しており、PHPのバージョンが4.0.6以降ならOKとのことです!つまり、自分のサーバやが使えるレンタルサーバならほとんどの場合OKでしょう。

ダウンロード

こちらから
※ユーザ登録が必要です。

PHPのバージョンによってダウンロードするファイルが異なります。

お使いのサーバのPHPのバージョンを知るには、

<?php phpinfo(); ?>


だけ書いたファイルを「php_version.php」というファイル名ででも付けて、サーバにアップしてアクセスします。(例:http://kazuizm.com/php_version.php)


大抵のサーバであれば、intel のglibc2のいずれかのバージョン用のものをダウンロードすればいいと思いますが、ご確認を。

うちの場合は自分のサーバのPHPのバージョンが4.3.11だったので、php_accelerator-1.3.3r2_php-4.3.0_linux_i686-glibc2.1.tgzをダウンロード。


アップロード/展開

圧縮ファイルをWindowsでダウンロードしたら、解凍ソフトで解凍してサーバにアップロードするか、サーバで直接以下のように展開します。

# tar xvfz php_accelerator-1.3.3r2_php-4.3.0_linux_i686-glibc2.1.tgz

そうすると、その中(php_accelerator-1.3.3r2_php-4.3.0_linux_i686-glibc2.1.3)にphp_accelerator_1.3.3r2.soというファイルがあるので、これを/usr/local/libディレクトリにコピーします。

# cd php_accelerator-1.3.3r2_php-4.3.0_linux_i686-glibc2.1.3

# cp php_accelerator_1.3.3r2.so /usr/local/lib


/usr/local/libディレクトリがなければ作って放り込むべし。

# mkdir /usr/local/lib  ・・・root権限じゃないと無理かも?


php.iniファイルの編集

コピーが終了したら,php.iniの最終行にPHPA用の設定を追加。以下をコピペで!

;PHPアクセラレータ

zend_extension=”/usr/local/lib/php_accelerator_1.3.3r2.so”


phpa.shm_ttl = 36h   ・・・共有メモリ キャッシュの存続期間


phpa.shm_size = 16   ・・・共有メモリ キャッシュのサイズをメガバイト単位で設定


※php.iniは通常は/etc/php.iniにあると思います。

 →ダウンロードのところで紹介した方法(phpinfo();)でアクセスすると、

  Configuration File (php.ini) Path の項目で知ることができます。

vi /etc/php.iniで追加するか、一度ダウンロードしてエディタで編集してアップロードするなり、します。

私の場合は、

; Directory in which the loadable extensions (modules) reside.

extension_dir = /usr/lib/php4


の次あたりに入れました。


の再起動

# service httpd restart

これをしないと設定がいつまで経っても反映されません。

動作確認

ダウンロードのところで紹介した方法(phpinfo();)でアクセスすると、

PHP Accelerator v1.3.3r2, Copyright (c) 2001-2002, by Nick Lindridge

の表示が出てきます。

体感的に速くなった?!皆さんの環境ではいかがでしょうか・・・??


共有キャッシュメモリのサイズやタイムアウト値、等、細かい設定もいろいろできるみたいです。(php.iniファイルに追記することで有効化されます)

詳しくはダウンロードした圧縮ファイルに入っているCONFIGURATION.txtなどを参照して具体的に一番いい設定など試して見て下さい。(そしていい設定があったら教えてください!razz


こちらもご一緒にどうぞ!

One Response

Leave a Reply

Kazuizm は WP Super Cache でキャッシングされているおかげで Digg に耐えられます