hiromasa.zone : o)

2006/9/20 Wednesday 投稿時の月齢:27.3  月名:二十八日月  潮汐:中潮 Moon:27.3[二十八日月]今日の心技体 : 好調期好調前不安定期低調期

sitemap.xml とアーカイブが壊れた このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 雨のち晴(23/19) ひろまさ @ 3:16

実は先日から気がついていたのですが、うちの Google Sitemap が 7月くらいからうまく作成できていませんでした。 また、上のメニュにつけている「アーカイブ」もリンククリックしても真っ白になっていました。。 ( yutaka さん、ご指摘ありがとうございました :-))

適当に修正して使っていたらどんどんポンコツブログに。。

とりあえず、sitemap.xml から直してみようということで Google Sitemap Generator for WordPress のソースをごにょごにょしてみる…

どうも、メモリにいっかいエントリ全部読んでから XML をレンダリングしているようだったので、メモリ不足かなと、そのつどちまちまファイルに書くように改造…

なおらない。。

なんでだろう、、と思ってもう少しソースをおってみて衝撃の発見。

エントリのリンクを作るのに、1エントリずつ SQL を発行している!

ちゅーことは、うちだと 600 クエリ以上(エントリ数)一度に発行していることにします。 orz

もーしかすると、メモリじゃなくて MySQL にはじかれているのかも。。 ピンときて、使っていたアーカイブの出力用のタグ (<?php wp_get_archives(‘type=postbypost’); ?>) も確認してみると、これも同様な SQL を発行してしまうようです。

ふつうのサーバなら、 600 クエリくらいどーってこともないですがレンタルサーバだとちょっと厳しいですね。

どちらも要はリンクさえ作れればいいので、get_permalink 相当の関数を自前でつくって、プログラムはエントリごとに get_permalink で(get_post して) URI を取得するのではなく、SQL 発行するときに get_permalink するのに必要な情報をいっしょに SELECT するようにしてリンクをつくってあげれば OK だと思います。

とりあえず、うちは POST_ID が URI なので、Google Sitemap Generator は、URI つくるところを get_permalink を使わずに POST_ID から文字列をつくってあげて回避しました。

さて、アーカイブのほうはどうしようか… ちと考えよう。

リミットなしで <?php wp_get_archives(‘type=postbypost’); ?> なんてする場合はお気をつけください。 😛

No Comments


このサイトはコンテンツをフリーズしました。トラックバック・コメントは閉じられています。

新しいサイトは、

hiromasa.another :o)

です。 :-)

このサイトについて

このブログは引っ越しを行いコンテンツはフリーズしています。hiromasa.anotherへどうぞ。

Powerd By WordPress

We (Heart) WordPress

WordPressME Logo
WordPress Plugins

ブログ内検索

Todays Popular

WordPress Ring

はてなリング - WordPress -

情報

29 queries. 0.887 seconds.

このページの先頭へ