Category Archives: モジュール

phpのzlibモジュールでコンテンツを圧縮

さくらレンタルサーバはmod_deflateモジュールが入ってないので、PHP側でgzipしてうんぬん~というのをやっていたんだけど、これでよかったのだった。

PHPでコンテンツをgzip圧縮する方法 zlib編

gzip でコンテンツを圧縮することにより、ネットワークの負荷を
軽減させることができ、レスポンススピードの向上が期待できます。

しかしながら、mod_deflateが利用できない場合もあります。phpの拡張 zlib を利用することでコンテンツの圧縮をすることが可能になります。
ob_startとgzhandlerを使うのと異なり、ソースコードの変更は必要ありません。

さくらなどのレンタルサーバを借りている場合に有効な手段になります。

PHPの設定ファイル php.iniに下記設定を追加します。
/usr/local/etc/php/your-php.ini

zlib.output_compression=1

さくらのレンタルサーバの場合、$HOME/www/php.ini に書きます。

うーむ。簡単。
今だとさくらコンパネからphp.iniを修正できるので、そちらで書いても良いですね。

動的に拡張を有効にする

ベイエリア情報局: PHPで拡張を動的に有効にする汎用的な方法

最近のPHPではPHP_SHLIB_SUFFIXという定数に拡張の拡張子が定義されているので、それを使えばOK。

とのことなので、PHP_SHLIB_SUFFIXを使えばOKですね。

[php]
$prefix = PHP_SHLIB_SUFFIX === ‘dll’ ? ‘php_’ : ”;
dl($prefix.’foo.’.PHP_SHLIB_SUFFIX);
[/php]

しかし、これではMacOSではうまくいかないそうで。。
リンク先ではMac用でもOKなように汎用的に作られています。すごい!

携帯の端末IDでログイン

toyosystem » Blog Archive » CakePHP::携帯の端末ID(uid)で「かんたんログイン」
載せられていたスクリプトでPEAR::Net_UserAgent_Mobileの使い方がなんとなく分かりました。

Memcacheはすごいのか

Memcacheはやっぱりすごかった : アシアルブログ
memcacheを使う時用メモとして。すごいのか。ふむふむ。

XCacheをインストールしてみました。

ではさっそくダウンロード
Fedora7に入れました。

[code]
$ wget “http://xcache.lighttpd.net/pub/Releases/1.2.1/xcache-1.2.1.tar.gz”
$ tar zxvf xcache-1.2.1.tar.gz
$ cd xcache-1.2.1
$ phpize
$ ./configure –enable-xcache –enable-xcache-coverager –with-php-config=/usr/bin/php-config
$ make
$ make test
# make install
[/code]

正直、coverageはxdebugでやるのでいらないかな、とも思いつつ。


Installing shared extensions: /usr/lib/php/modules/

というわけで無事インストールされました。早速組み込みましょう。例によってphp.iniを編集します。


[xcache-common]
zend_extension = /usr/lib/php/modules/xcache.so
[xcache.admin]
xcache.admin.auth = On
xcache.admin.user = "mOo"
; xcache.admin.pass = md5($your_password)
xcache.admin.pass = ""
[xcache]
xcache.shm_scheme = "mmap"
xcache.size = 64M
xcache.count = 1
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 1M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = Off
xcache.mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = Off
xcache.coveragedump_directory = "/tmp/xcachecov"

解凍したxcacheディレクトリにあるxcache.iniZAPAさんのを参考に設定しました。
[code]
$ php -i
[/code]
でxcacheが組み込まれていることを確認。早速(既に実行時間を計測してあった)CLIスクリプトをxcache組み込みで走らせませす!
何も変わらず!ズコー!
念のためApacheを再起動したりしてみましたが、何も変わりませんね。

xcacheのadmin画面でCacheの確認が出来たりしますので、その設定を行いましょう。解凍したxcacheディレクトリに/adminというフォルダがありますでの、それをWEBディレクトリにコピーするなりし、ブラウザから先ほどのphp.iniで設定したadmin.userとadmin.passを用いてアクセスします。
#admin.passはmd5で符号化してください。
#php -r “echo md5(“your-password”);”
#など。

で、admin画面で確認してもCLIは全くキャッシュされていませんね。。

mod_phpとかphp-cgiしか早くならない?のですかね。
もちろんApache上でWEBサイトとしてアクセスした場合はきちんと早くなってます。Zend Frameworkを使った簡単なサイトで計測して、スクリプトの実行時間が半分になりました。すごいです。それだけで感動。

XCacheのインストールメモ

ZAPAさんの XCacheのインストールメモ2 を見て、XCacheに興味を持ったけども、未だにアクセラレータ系のものを入れたことのない私です。なんだか昔の不安定だーっていうイメージが拭えないからかもしれません。入れたことないのにイメージ先行。しかし、XCache2は非常に安定しているみたいですし、これは一丁入れてみるしか!
ところでこの手のものはCLIでも早くなるんですかね。なるんですよね。たぶん。。

PHPの種 ブログ » XCacheをインストールしてみました。に追記しました。

Fatal error: Class ‘DOMDocument’ not foundと出たら

最近のCentOSやFedoraでPHPを走らせていると、時々

Fatal error: Class ‘DOMDocument’ not found

なんてエラーに出くわしますが、これはいわゆるDOMがPHPに組み込まれていない>CentOSなどでは–with-domなconfigureでコンパイルされていない、ということですね。モジュールとして組み込めばOKです。


# yum install php-xml

php-xmlにphp-domも組み込まれています。