QNAPのPHPを高速化(eAccelerator) その2(補足)

前回はQNAPでeAcceleratorの高速化を紹介しました。
今回は、それに関する補足です。

eAccelerator管理画面(control.php)を使用する

eAcceleratorを有効にしても、実際にどれぐらいメモリがキャッシュされているのか、また何がキャッシュされているのかが分かりにくいと思います。
eAcceleratorではもともとそれを管理する画面(control.php)が用意されているので、QNAPに導入します。

  1. phpinfo()で、eAcceleratorのバージョンを確認しておきます。
  2. eAcceleratorの公式サイトから、上記で確認したバージョンと同じアーカイブをダウンロードし、解凍します。
  3. 解凍したフォルダの中にcontrol.phpがあるので、QNAPのQweb以下のどこか(例えばQweb/eaacelerator/など)に配置します。他のファイルは使わないので削除してOKです。
  4. QNAPのphp.ini編集で、[eaccelerator]セクションの一番下に、

    eaccelerator.allowed_admin_path = [配置したパス]/control.php

    を追記して適用します。(上記の例だと/share/Qweb/eaacelerator/control.phpとなります)

  5. デフォルトの設定だと誰でもcontrol.phpにアクセスできる設定になっているので、ファイルを開いて$authをtrueに、$userと$pwを適切に設定するか、.htaccessなどでアクセス制限をしておきます。
  6. ブラウザでcontrol.phpを開いてみます。eAccelerator control panelが表示されればOKです。
    画面下のボタンではキャッシュのクリアができるようですが、私の環境ではディスクキャッシュ(/.eaccelerator.tmp)のクリアができませんでした。

共有メモリサイズ(eaccelerator.shm_size)を変更する

eAcceleratorでは通常、共有メモリサイズ(eaccelerator.shm_size)を任意に指定できます。
QNAPでもphp.iniの中でパラメータeaccelerator.shm_sizeを持っていて、初期値は32(MB)となっています。
しかし、試した人は分かると思いますが、QNAPではなぜかこの値を変更しても32(MB)に戻ってしまいます。
(2011.03.24以下修正した)
調べてみると、この値は/etc/init.d/Qthttpd.shの中でハードコーディングされていることが分かりました。
Qthttpd.shを書き換えることによって、メモリサイズを書き換えられることは確認済みです(詳しくは書きません)。

以上です。