a person powered by ototoy blog

モヘンジョだろ!!

2005年12月13日

おいしいな [ワイン]

このPio Cesareは白なんですが、なんとも後に残る香りが桃みたいで、うっとりします。間違いなくできがいい。このあと、Pelago(ビンテージ忘れた)とSassicaia 2001を同時にグラスを並べて飲みました。サッシカイアはやっぱり早飲みするもんじゃないなぁと思いました。Pelagoはバランス取れてて強くて良い感じでした。でもTignanelloと同じ値段てどうなんだろか。

食いすぎ飲みすぎで少し残してしまったのが悔やまれる。

| Posted By nt 投稿日: 2005年12月13日 21時58分 更新日: 2005年12月15日 3時57分

コメント

ほーほー
by ゆげ - 2005年12月14日 2時0分
name:
comment:
【コメントに関する注意事項】
記事と全く関連性のないコメント(例:宣伝目的のコメントスパムなど)は、オーナーの判断により削除される場合があります。 - レコミュニ会員としてコメントする

トラックバック

PEARぁぁあああ!!orz 

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.net/debug_backtrace PHP5とPHP4.3以降に入った組込関数だった。マニュアルを読むとメモリはもちろん、かなりCPUリソースも食いそうな勢いだ。こんなのがデフォルトで走るPEARって...大丈夫なのか?

| Posted By nt 投稿日: 2005年12月13日 1時38分 更新日: 2005年12月13日 2時10分

コメント

なんか、、やな言語ですね。
cとかlibcとかでこんなことがあったらやだなぁ。。
by ゆげ - 2005年12月13日 9時32分
有益な情報ですね。
PHPむやみにアップデートするのやめようっと。
by tarohei - 2005年12月13日 16時12分
name:
comment:
【コメントに関する注意事項】
記事と全く関連性のないコメント(例:宣伝目的のコメントスパムなど)は、オーナーの判断により削除される場合があります。 - レコミュニ会員としてコメントする

トラックバック