Home > Archives > 2008-09

2008-09

Mac OSXのAdiumが1.3.2b1になった

MSNメッセをOSXで使う事に関する記事を先日書きましたが、
バージョンアップが激しく将来に期待出来ると言う事でAdiumを使っています。

そしたらなんと今回のアップデートで「不在メッセージ」に対応してくれました!

MSNメッセ(今はWindowsLiveか)の知り合いが割と多いので、アップデートして初回ログイン時はヤバかったです。
「ポコペン」「ポコペン」「ポコペン」「ポコペン」「ポコペン」
みたいな。

とにかく、これでようやくWinXp上のWindows Live Messangerと遜色なく使えるかなと思います。
状態メッセージがまだ貧弱だけど、他人のは見れるからそれほど困る事も無いかと

CakePHPの高深度アソシエーションの欠点

CakePHP(1.1)でSNS的なシステムを運用していて気づいた事。
1.2で改善されてるのか?ちょっと調べてないから解らないが…

メッセージ一覧のページの表示が前々から遅くて、何が起きてるのかと思いつつ放置していたんだが
少し余裕が出て来たのでデバッグモード(=2)でクエリを見てみたら、何か件数x3くらいのクエリが実行されていた訳だ

ここで問題。

PHP標準のSQL発行ではアソシエーションの階層はハッシュの階層に反映されない。LEFT JOINを何度しようと、結局はSELECTで指定したカラム名による一次ハッシュになるはず。
でもCakeでアソシエーションを組むと、階層が反映されるわけだ。
どうやっているんでしょうね?

正解は、「カラムごとにクエリを何度も発行している」(!!)
だから今回の様に、何かのリストのような物を表示する時にCakeのfindAll(Byなんたらを含む)をするとめちゃくちゃ重いってわけだ

結局Model::query()にカスタムしたSQL文を突っ込んでやったら爆速になりましたとさ。

まとめ

CakePHPのfind系メソッドは複雑なアソシエーションを組んだデータのリストには向いてないので、自分でSQL文を書こう!

CakePHP1.1のscaffolgでアンダーバー(_)区切りDB(モデル)を使う時にバグる

タイトルの通りです。
そして記事としてはサイトの紹介に留まります。
http://d.hatena.ne.jp/cos31/20080220/1203490118

Notice: Trying to get property of non-object /hogehoge/cake/libs/controller.php L66

バグの内容としては、テーブルは通常通りに描画されているっぽいんだがなぜか表示されない。動作の雰囲気は、モデル情報を適切に取得できずにカラムが生成出来ていないといった所。

スクリーンショット撮っておけばよかったなぁ

まぁ私用メモみたいなもんですが、困ってる人の参考になれば幸いです

Home > Archives > 2008-09

Search
Feeds
Meta

Return to page top