XREAでZend Optimizer
XREAでZend Optimizerを入れる。
Zend Optimizerとは、速度を40%ほど高速化するという触れ込みのモジュールXREAのPHPで好き放題する
XREAで好き放題するにはPHPのセーフモードをOFFにする。PHP safemode オフにする利点
- PHPの処理時間制限が無くなる
- dir関数でディレクトリが作成できる
- 好き勝手にモジュールを追加できる
- Zend Optimizerが使える
- PDO 関数 MySQLや PostgresのPDO関数が使える
- APCキャッシュも入れられる
- PECLもコンパイル済みなら導入できる(ハズ)試してません
- FastCGIが使えるらしい
- システム関数が使える。
つまり、レンタルサーバー特有のたがが外れて好き放題になってしまう。
しかしデメリットがある。
- CGI版PHPとモジュール版PHPだとCGI版の方が遅い。
- XREAの負荷率カウントが非常にあがりやすい。
- phpのSessionが書き込めないエラーが出る
つまり用途を選ばないと、XREAのアカウントBANされる諸刃の刃。
設定方法
.htaccess
.htaccessに以下を記述
<Files *.php>
###########################
## CGI mode
###########################
#AddHandler cgi-script .php
#AddHandler application/x-httpd-phpcgi .php
</Files>
一般的なCGI版PHPの動作指定方法
#AddHandler cgi-script .php
こっちはXREA特有の書き方。
#AddHandler application/x-httpd-phpcgi .php
どちらでも別段構わない。どちらかをコメントアウト。
<Files *.php>は冗長だけど、まぁ影響が他に行かないように。たぶん要らない。
PHPのファイル
モジュール版PHPのファイル
1:<?php
2:require_once("Var_Dump.php");
3:
この1行目より前に追加、
1:#!/user/local/bin/php5 -cMyConf.ini
2:<?php
3:require_once("Var_Dump.php");
4:
スペースがあるとダメ?
"-c" オプション の後にスペースを入れると動かない事があるし、スペースがないと動かないときも・・なんでだ?""1:#!/user/local/bin/php5 -cMyConf.ini""
""1:#!/user/local/bin/php5 -c [スペース] MyConf.ini""
php.iniの代わりに使うユーザ独自のiniファイル。
さっきのPHPと同じフォルダに MyConf.iniを作る。(*)
[Zend]
zend_extension="[yourOptomizerPath]"
zend_optimizer.optimization_level=15
(*)ディレクトリを変えたときは、
#!/user/local/bin/php5 -c[フルパス]で指定する
Zend OPTIMIZERの設置。
XREAがおいているZendOptimizerを利用する時は
zend_extension="/usr/local/Zend/lib/ZendOptimizer_5_1_x.so"
事前にSSHなどで使いたいPHPに対応するOptimizerがあるか調べておく。
自分で最新版ZendOptimizerをダウンロードしてくる場合
今回はZend Optimizer3 をDownLoadして HOME/lib/Zend/に設置した
./Zend
--+---
--|
--4_4_x_comp
--5_0_x_comp
--5_1_x_comp
--|
--+---ZendOptimizer.so
とくにManagerは指定しなくても良かった。ManagerはPHPのバージョンの自動判別に使ってるのかも知れない。
以上で終了。
動作確認
phpinfo();
でpowerd byに with zend optimizerがあれば成功
思わぬ副作用
冒頭に書いたが、CGIモードにすると、SafeMode OFFになるのでいろいろメリットがある。
PDO関数
XREAでPHPをCGIモードにするとMySQLでPDOが使える。時間あたりの処理が3倍になる。1000件以上処理すると如実にPDOの効果が出てくる。Smartyのキャッシュ
ディレクトリ関数が使えるのでSmartyのキャッシュをディレクトリ毎に保存できるようになる。ディレクトリ内に数百枚のキャッシュが溜まることが無くなって処理が早くなる。システム関数が使える。
system関数であれやこれや出来るようになる。XREAの負荷率が恐ろしいことに。。。
max_execution_timeを自由に出来る。長めに設定してしまいがち。無限ループとかすると大変なことに。。。session_start()できない
XREAではphpはApacheモジュールの前提なので/tmpにSessionデータを書き込む設定になっている。つまりプロセスのオーナーがApacheで書き込みされる。一方でCGI版だと、プロセスのオーナーが自分になる。つまり/tmpのアクセス許可が必要だ。たぶんXREAのミスだと思うが/tmpのパーミッションでCGI版のSessionはそのままでは動かない。
session のエラーメッセージが出てきた。
なので自分のsession_save_pathを変更して自分のHOME内に用意しておく
session.save.path = /virtual/XXXXXXXX/temp/session/
の様に設定が必要。
2006年05月31日(水) 23:48:17 Modified by takuya_1st