2005/11 | ||||||
---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | |||
2005/12 | ||||||
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
a person powered by ototoy blog
モヘンジョだろ!!このPio Cesareは白なんですが、なんとも後に残る香りが桃みたいで、うっとりします。間違いなくできがいい。このあと、Pelago(ビンテージ忘れた)とSassicaia 2001を同時にグラスを並べて飲みました。サッシカイアはやっぱり早飲みするもんじゃないなぁと思いました。Pelagoはバランス取れてて強くて良い感じでした。でもTignanelloと同じ値段てどうなんだろか。
食いすぎ飲みすぎで少し残してしまったのが悔やまれる。
PHP-5.1.1にあげたサーバで色々な不具合がでている。今日の不具合は突然のメモリ不足。今まで64MBで充分だったのに、128MBでも足りなくなった。いくらなんでもそれは酷いんじゃないですかとか思いながら、自分のスクリプトを色々調べても、ルーズなメモリ管理なんかはしているわけがない。グローバルででかい配列とかインスタンスを確保してれば別だけどそんなことは全然ない。システム側でなにか挙動が変わったんじゃないかと思ってさらに色々調べてたらどうやらPEAR_Errorクラスのコンストラクタで、特に何も設定しないと強制的にdebug_backtrace()という関数が呼ばれることが判明した。なんじゃこれ?しかも、なんか不思議な制御構造で変テコな定数(プロパティ)をいじらないと抑止できない。ていうか汚い。PEARってプロダクションレベルのサービスに使われてるライブラリだと思うんだけど、ずいぶんと凄いトラップがあるもんだねぇ。ある意味スゲーよ。でもPHP4のころはあんまり気にならなかったってことはPHP5だけで有効な動作なのか、それともPHP4の時のdebug_backtrace()がほとんど何もしてなかったのか...
// disable PEAR's debug_backtrace();
$a = &PEAR::getStaticProperty('PEAR_Error', 'skiptrace');
$a = TRUE;
なんかちょっとイヤな書き方だが。まあ、いいや。この処方を行った後は、PEAR::DBを使っていて、128MBで足りなかった(プロセスでみると250MB超)スクリプトがプロセスで見ても16MBくらいで収まるようになった。
というわけで、PEAR_Errorレベルでデバッグしなくてもいい場合、上記スクリプトでメモリも(たぶん)実行時間も節約できるよ。日本語でググってみてもどこにも書いてないみたいだから、書いとく。
# というモチベーションでこの記事をFirefox上でエディットしてたらFirefoxがコアダンプして落ちたのでemacsで書き直してるんだけど、これってなんかの呪い?
追記: http://php
コメント