2007/7/12
PHP5.2.3の configureオプションである–disable-allを指定した場合にどの程度パフォーマンスに影響するかを実験する。
–disable-allとは、PHPをインストールする際にデフォルトでインストールされる機能をインストールしないようにするオプション。デフォルトでは不要なも機能まで入ってしまうため、無駄が発生する場合がある。例えば、XML,JSON、filter、PDOなどである。
PHP実験環境
- 共通環境
- ゲスト:CentOS release 4.4 (Final) (on Vmware server 1.0.2)
- ホスト:Windows XP Professional
- CPU: Intel Core2 Duo 6600 2.4G
- Apache:2.2.4
- ./configure –prefix=/usr/local/apache2 –enable-ssl –enable-rewrite –enable-so
- 環境1
- ./configure \
–enable-mbstring \
–enable-soap \
–enable-zend-multibyte \
–with-apxs2=/usr/local/apache2/bin/apxs \
–with-mysql=/usr/local/mysql \
–with-pdo-mysql=/usr/local/mysql \
–with-curl \
–with-curlwrappers \
–with-gd \
–with-jpeg-dir=/usr/lib \
–with-png-dir=/usr/lib \
–with-zlib-dir=/usr/lib \
–with-mcrypt
- 環境2
- ./configure \
–enable-mbstring \
–enable-soap \
–enable-zend-multibyte \
–with-apxs2=/usr/local/apache2/bin/apxs \
–with-mysql=/usr/local/mysql \
–with-pdo-mysql=/usr/local/mysql \
–with-curl \
–with-curlwrappers \
–with-gd \
–with-jpeg-dir=/usr/lib \
–with-png-dir=/usr/lib \
–with-zlib-dir=/usr/lib \
–with-mcrypt \
–enable-libxml \
–disable-all
- 環境1には入っていて、環境2には入っていないモジュール
- ctype
- dom
- filter
- hash
- iconv
- json
- pcre
- PDO
- pdo_mysql
- pdo_sqlite
- posix
- session
- SimpleXML
- SPL
- SQLite
- tokenizer
- xml
- xmlreader
- xmlwriter
結果
ファイルサイズ
|
環境1 |
環境2 |
環境2/環境1
(100%以下なら小さい) |
| libphp5.soのファイルサイズ(B) |
17268191 |
11998616 |
69% |
| /usr/local/bin/phpのファイルサイズ(B) |
16307443 |
11306924 |
69% |
| apache起動直後のメインプロセスVSZ (kB) |
19572 |
17332 |
89% |
| apache起動直後のサブプロセスVSZ (kB) |
19704 |
17468 |
89% |
コマンドラインベンチマーク
コマンドラインにてfunction callの速度を計測。PHPのソースコードに付属している ./Zend/bench.php を利用。 5回実行した結果の平均を記載。
% php ./Zend/bench.php|awk ‘{print $2}’
|
環境1 |
環境2 |
環境2/環境1
(100%以下なら環境1が高速) |
Webベンチマーク
Webでアクセスした際のパフォーマンス測定。コマンドラインと同じスクリプトを利用
| 環境1 |
環境2 |
環境2/環境1
(100%以下なら環境1が高速) |
結論
Webで利用した場合は、環境1と環境2において差異は無さそう。
ファイル容量がモジュールを削減した分、20%程度減っているため、プロセス起動が頻繁に発生する場合に環境2はアドバンテージがある。
環境1

環境2

2007/6/14
@YMCのVPSを借りました。
カスタマイズドなので、root権限でやりたい放題できます。
Xenで動いています。ゲストOSはCentOS 4.5 です。
しかしながら、初期状態ではいくつかいらないアプリケーションが元から入っているので削除します。
以下は、コマンドの意味がわかる方のみ実行してください!かなーり危険です。
Read more
2007/3/5
2007年3月4日時点で、最新の安定版のライブラリを使った場合のSennaのインストールメモ。
Sennaとは、MySQLのFULLTEXT INDEXを日本語でも行えるようにするMyISAMテーブルの拡張モジュール。
以下のコマンドをコピペすればインストールが完了することを目的で書いています。
cd /usr/local/src
# mecab
wget http://superb-west.dl.sourceforge.net/sourceforge/mecab/mecab-0.94.tar.gz
tar zxf mecab-0.94.tar.gz
cd mecab-0.94
./configure --prefix=/usr --with-charset=utf8
make
make install
cd ..
# mecab dic
wget http://easynews.dl.sourceforge.net/sourceforge/mecab/mecab-ipadic-2.7.0-20060707.tar.gz
tar zxf mecab-ipadic-2.7.0-20060707.tar.gz
cd mecab-ipadic-2.7.0-20060707
./configure --with-charset=utf8 --prefix=/usr
make
make install
cd ..
# senna
wget http://osdn.dl.sourceforge.jp/senna/24191/senna-1.0.1.tar.gz
tar senna-1.0.1.tar.gz
cd senna-1.0.1
./configure --prefix=/usr
make
make install
mkdir /var/senna
echo 'sjis' > /var/senna/senna.conf
cd ..
#mysql
wget http://www.rootman.co.kr/NFS2/APM/mysql-5.0.24.tar.gz
tar zxf mysql-5.0.24.tar.gz
cd mysql-5.0.24
patch -p1 < ../senna-1.0.1/bindings/mysql/mysql-5.0.24a.senna.diff
patch -p1 < ../senna-1.0.1/bindings/mysql/mysql-5.0.24a.senna.2ind.diff
libtoolize -c -f
aclocal-1.9
autoheader
automake-1.9 -c -a -i
autoconf
touch sql/sql_yacc.yy
CFLAGS="-O3 -mtune=nocona -I/usr/local/include" \
CXX=gcc CXXFLAGS="-O3 -mtune=nocona \
-felide-constructors -fno-exceptions -fno-rtti -I/usr/local/include" \
LDFLAGS="-L/usr/local/lib" \
./configure \
--prefix=/usr/local/mysql \
--with-charset=utf8 \
--with-extra-charsets=all \
--with-mysqld-user=mysql \
--with-senna \
--enable-thread-safe-client \
--enable-assembler \
--with-readline \
--with-mysqld-ldflags=-all-static \
--disable-shared
make
make install
2007/2/7
atコマンド
# at -t '200702100700'
at> shutdown -h now
Ctrl+D
これで動くのかは。。。。神のみぞ知る。
っていうのは嘘で、
# atq
で見られるっす。
Read more
2006/10/24
SubversionではCVSのようにテキストファイル内に特定の文字列がある場合、
それを自動的に置き換えない。
Subversionの場合はファイルごとに文字列の置き換えを指定してあげないと
いけない。
1つ1つ置き換えるのは面倒なので以下のコマンドでカレントディレクトリ以下
にIDタグの置き換えを行う設定をできる。
% svn propset svn:keywords Id `find . \( -name .svn -prune \) -o -type f -print | xargs grep -l '\$Id:'`
% svn commit
レポジトリ自体の設定にできないのだろうか。。。
2005/7/13
Red Hat ES3のセットアップをしたんだけど,このディストリビューションはとても解りづらい...(TOT
up2dateができるまで一晩かかった...自分で1こ1こrpmをダウンロードしてインストールの繰り返し....rpmはRed Hat NetworkのWebからしか落とせない.ほんとやだ.
むかつく点 1
rpmコマンドでrpmファイルを指定してインストールするときにも順番が関係ある.
むかつく点 2
RPMの依存関係がめちゃくちゃ
むかつく点 3
up2dateのupdateがある...ほんとおわってる.
むかつく点 4
rpmダウンロードするのに100kbpsぐらいしか出ない.
2004/12/20
vimで、ファイル内の文字列を置換するコマンド。
・確認しながら置換
:%s/group/`group`/gc
・全部置換
:%s/group/`group`/g
2004/2/11
CNSガイドを書いていて,ちょっとためになったこと.
世の中で俗に言われている”APOP”.
「APOPはプロトコルか?」という疑問があがった.APOPを,POP3やIMAPなどと並列に扱ってよいのかどうかという問いかけがあった.
僕の中では,APOP=Authenticated Post Office Protocol と思っていて,POP3の拡張かと思っていた.しかし,それは間違いだった.
どうやら,POP3で規定されている1つのコマンドに,”APOP”がある.POP3コマンドのLIST,DELE,RETRコマンドと並列に扱うものだった.
数年前頃からセキュリティの意識が高くなり,APOPという言葉が流行りだしたが,APOPの認証方式の仕様自体は昔から規定された.
ここでかかれている内容は,いまいち正確ではない.正しいけど,抽象度が高く,勘違いを招く文章だ.
http://e-words.jp/w/APOP.html
そして,こちらがPOP3のRFC.
http://asg.web.cmu.edu/rfc/rfc1939.html
2004/1/2
Joi Ito氏が作成したmail2entryという,メールからweblogに投稿できるスクリプトを設置した.そのインストールログを書いておく.
スクリプト自体は,Pythonでかかれており,実行環境として2.2必要が必要.
構築環境
mail2entry(20030506)
qmail-1.03 + localtime patch
python 2.2 + JapaneseCodecs
Redhat 9.0
Movable Type 2.64
インストール
- アーカイブをダウンロードする
http://www.gweep.net/~aron/mail2entry/mail2entry20030506.tar.gz
- 展開して,その中にあるsettings.pyを自分の環境に合わせて編集する.設定項目はファイルにコメントとして書いてある.
- 設定ファイルが正しいかどうかテストする.アーカイブ中のINSTALLにかかれている実験方法が不親切なので,ちょっと細かく書く.
- テストをするメールファイルを用意する.(生のメールデータ) ファイルを用意するのがめんどくさい場合はこちらに用意してあるのを使ってください.(100px X 100px の画像が添付されたメール)
- 以下のように,mail2entry.pyのSTDINにメールファイルを流す.cat < メールファイル> | python mail2entry.py <setting.pyのあるディレクトリ>
- 例:cat message | python mail2entry.py .
- このコマンドを実行すると,/tmp/log-tracebacks.logに,スクリプトの実行結果が出るのでチェックする.エラーが無ければ成功.このメールファイルがちゃんと登録されると以下のようなエントリーが作成される.

- 今回,MTAとしてqmailを用いているので,.qmailファイルに,あるメールアドレスに投げられたメールをmail2entry.pyに流す設定をする.
- 宛先となるユー残お.qmailファイルに,以下のような内容を書き込む.
| /path/to/mail2entry.py /path/to/settings.py
- ちょっとつっこんだ話になるが,qmail-commandが実行されるときはumask066で動く.よって,qmailからmail2entry.pyが呼ばれ,新しいファイルが作成されるとotherに対して読み込み権限がつかないので、mail2entry.pyを適宜変更する.
- 上記を行って,メールを送信すると,おそらくエラーが発生する.エラーログ(/tmp/log-tracebacks.log)を参照して,適宜ファイル・ディレクトリのパーミッションを変更する.
Read more