仕事と晩飯とその他

日記です。

負荷軽減への道

負荷軽減というより、そもそも簡単だからってなんでもかんでもsimplexmlでやってしまったのが間違いの元ということなのだ。だから、一部のファイルを性的に書き出すことで一時的に負荷を減らせても、ちょっとアクセスが増えると元の黙阿弥。simplexmlでONIXを読み込む回数を減らすだけでは駄目だ。根本的な解決のためには、特に検索に於いて、simplexmlを使わないようにしないといけない。

ということで今さらながらXMLReaderを触り始めてみた。が、これがまたよくわからない。検索しても日本語どころか英語でもドキュメントが少ない。いや、日本語で見つかる少数のドキュメントも意味が分からない。しょうがないので、いつものように少ない情報を参考に試行錯誤で始めてみた。

で、結果として、昨晩の段階では駄目で、今朝になってようやくちゃんと動いた。とりあえず表示するところまで。DOMでインポートしてどうこうはどうなのかなあ、上手くいかなさそうな気がする。名前空間が邪魔だよなあ。いや、もしかしたら邪魔じゃないかも知れないけど、相変わらず微妙にうまく処理できないんだよなあ、名前空間。ああ、これもあれか、simplexml使わなければいいのか。なるほど。できればファイルひとつで済ませたいけど、下手に汎用性にこだわるより処理を分けたほうが負荷は少なくできそうだ。

以下の流れが理想的なんだろうなあ。
1.ONIXにXSLTを適用して各種の検索用XMLを作成(特に全文検索用は別に持つ)
2.上記をXMLreaderで読み込み、DOM→sinplexmlでHTML書き出し

現状は検索の度にONIXにXSLTを適用してそれをそのままsimplexmlで読み込んでいた。しかも検索の種類でXMLを分けず、汎用性のある大きなサイズのものをそのまま。それじゃ駄目なんだってことがよくわかった。都度ONIXを読み込むことももちろんだけど、大きなサイズのxmlからsimplexmlを使って抽出という流れそのものが駄目だった。いい勉強になった。

これで負荷減らせるかなあ。もちろん、他にもやらないといけないことありそうだけど、とりあえずこれぐらいやっておけばしばらくは大丈夫なんだろうか。ちょっとよくわからない。