« 意地(泣き)のテスト最終章:日時指定投稿編 | メイン | そばめしに謝れ »

MT4.1+Perl版ダイナミック・パブリッシング+携帯投稿または日時指定更新...のキャッシュ問題解決編(多分)

どうやら、今度こそ、上手く行ったようなので未だに自信なさげながらも本気でまとめます。

主題は、「Perl版ダイナミック・パブリッシングを使っていて、携帯からの投稿時や日時指定更新時に上手く最新の記事が更新表示されない」ケースへの対応策です。

お盆休みの大阪帰省中、実は携帯からアレコレ更新しようと思っておったのですが、MTmailから何度送信しても、挙句にubicast Mail Bloggerから送信しても、全く更新ができないという事態に直面したのでした。エラーメールが返ってくる訳でも無いので当初はMTmail側のトラブルを疑ったのですが、ubicast Mail Bloggerからでもダメとなると小生が何かやっちゃったっぽいです。心当たりと言えば、先日、ダイナミックパブリシングに切り替えて以降、日時指定での更新時や、携帯からの更新時にキャッシュが上手くクリアされない問題が発生し「XMLRPCServer.pm」をガチャガチャと弄ったのが原因でしょうか。とまぁ、旅行中は軽くガッカリだったのですが、また新しい課題というか難題というか、夏休みの宿題っぽい事態が発生したわけであります。

「XMLRPCServer.pm」の何を弄ったのかと申しますと。上記の問題を解消するべく調べた中で、お世話になっているThe blog of H.Fujimoto様のPerl版ダイナミック・パブリッシング(MT4用)のページの中で、コメント部分にてこんなやり取りが記録されていたのであります。

No.21 yuha : (無題)
[返信] [引用して返信]

いつもお世話様です。
Perl版ダイナミック・パブリッシングを何とか導入させていただきました。この状態でモブログすべくMTmailを使用してエントリを投稿したところ、管理画面のブログ記事の一覧には正常に現れるのですが、全然サイトに反映されませんでした。管理画面で手動でサイトの再構築をしても改善せず、試行錯誤した結果、プラグインの設定のところからキャッシュをクリアしたところ表示されるようになりました。この現象を回避する方法はないもんでしょうか。
2007年12月25日 23:51

おおー、これはまさに小生も直面した課題。この時は結局諦め気味に、キャッシュを使用しない設定にしてアクセスされる度にページを生成させるようにしたのでありました。これに対する開発者の壱様のお答えがコチラ

No.22 壱 Author Profile Page: Re:MTMailの件
[返信] [引用して返信]

>yuhaさん
こんにちは。

ご質問の件ですが、おそらくMT/lib/XMLRPCServer.pmを書き換えれば動作するようになると思います。
MT4.01だと、上記ファイルの250行目に「$entry->save;」という文があります。この後に、以下の2行を追加してみてください。

$blog->touch;
$blog->save;
2007年12月26日 00:01

キタ━━━━(゚∀゚)━━━━ッ!!
早速該当のファイルを見てみることにします。若干上記のパスとは異なりますが、「(MTインストールディレクトリ)/lib/MT/XMLRPCServer.pm」 を発見して開いてみたところ...あり?250行目付近に「$entry->save;」ってのはありませんですナァ。小生のバージョンがMT4.1で、コメントにある「MT4.01」と若干違うからでしょうか。代わりに370行目付近にて「$entry->save;」を発見しました。何かもう一つ、480行目付近にも同じく「$entry->save;」があるのが気になりますが、とりあえず前者の後ろに

$blog->touch;
$blog->save;

を追加して、日時指定投稿のテストしてみました。再度キャッシュの使用をonにしてレッツ・テスト日時指定更新...効果ナッシング。キャッシュがクリアされません。じゃぁ後者側だけに追加した場合は?⇒やっぱダメですか。んじゃ両方ダ!⇒え、ダメなの?...ここで諦めて、キャッシュ機能をoffに戻し、放置していたのが拙かったようで。

結論から言うと、上記の後者側に

$blog->touch;
$blog->save;

を追加してしまうと、携帯からの更新が出来なくなってしまうっぽいです。ヌガー。

上記の前者側、すなわちMT4.1の場合は370行目付近にある「$entry->save;」の後ろに

$blog->touch;
$blog->save;

を追加することで、どうやら携帯からの投稿時には上手くキャッシュがクリアされるっぽいことが先ほどのテストで改めて確認できました。残るは、日時指定更新時にキャッシュが上手くクリアされない問題です。実はもう一つ「XMLRPCServer.pm」が存在しておりまして、「(MTインストールディレクトリ)/addons/Commercial.pack/lib/CustomFields/XMLRPCServer.pm」 という全く別のところに、同じ名前のファイルが存在するのであります。これの中の、「$entry->save or die MT::XMLRPCServer::_fault($entry->errstr);」の後ろにも、

$blog->touch;
$blog->save;

を追加してやると、日時指定更新の際にも、キャッシュがちゃんとクリアされる...と思います。

【まとめ】
MT4.1にてPerl版ダイナミック・パブリッシングを使用し、キャッシュ機能をonにした際

1. MTmailなどを使い携帯から更新しようとするとエントリー自身は正常に登録されるがキャッシュが上手くクリアされず、しばらく投稿した記事が表示されない。

(MTインストールディレクトリ)/lib/MT/XMLRPCServer.pm
上記370行目付近の「$entry->save;」直下に
$blog->touch;
$blog->save;
を追加する。480行目付近の「$entry->save;」には追加しちゃダメ。

2.日時指定更新をした際にエントリー自身は正常に登録されるがキャッシュが上手くクリアされず、しばらく投稿した記事が表示されない。

(MTインストールディレクトリ)/addons/Commercial.pack/lib/CustomFields/XMLRPCServer.pm
上記70行目付近の「$entry->save or die MT::XMLRPCServer::_fault($entry->errstr);」直下に
$blog->touch;
$blog->save;
を追加する。

(2008/08/22追記 ここから)
失礼しました、上記2番目は小生の勘違いのようであります。上記を適用するとMTのログにエラーが出ておりました。修正前の状態に戻して日時指定投稿してみたところ、問題なくキャッシュはクリアされておりましたので、上記1番目の修正のみで解決するようです。お騒がせしました。
(2008/08/22追記 ここまで)

なお、「(MTインストールディレクトリ)/addons/Commercial.pack/lib/CustomFields/XMLRPCServer.pm」にはバグがあり、日時指定投稿したりした記事の投稿時刻が9時間ズレてしまうという物がございます。16行目の「my ($cb, $mt, $entry, $original) = @_;」を「my ($mt, $entry, $original) = @_;」と直すことで解決するとの事ですので併せて対応するのがヨロシイかと。こちらの詳細はjm@foo様のこちらの記事をご覧ください。

って、時代はもうMT4.2に突入しているので何を今更な話かも知れませんが、お役に立てれば幸いです。この件に関しましては長期間に渡って長々と書き連ねましたことをお詫び申し上げます。

Googleブックマーク Yahoo!ブックマーク はてなブックマーク livedoor clipでブックマーク del.icio.usでブックマーク POOKMARK Airlinesに行き先登録

関連記事

トラックバック

このエントリーのトラックバックURL:
http://addressclub.net/cgi-bin/mt/mt-tb-ADC.cgi/190

コメント (1)

今までの経験からフラッシャー(点滅させている部品)が怪しいんでないかいと言う事で、部品の手配です。中古品は無く、新品もメーカーに在庫がないとのことで、一週間待ちとなりました部品が届き、フラッシャーの交換です今回の犯人はコイツのようです。右側回路が抵抗はありますが通電状態になっていました一番左の端子部分が変色しているのがわかりますでしょうか?新品は結構なお値段でしたので、また、プリウスということもあり(笑)こちらの部品はお財布にも環境にも優しい中古部品を手配しました翌日部品が届き、交換です。今度こそはバッチリOKでした!経験と勘の先入観にとらわれず、基本に忠実な作業をしなければいけないと改めて思い知らされた案件でした。
URL:http://www.timberlandmania.com/
決勝戦ではフルセットに持ち込み、同点でサドンデスでの勝利となりました。非常に見ごたえのある決勝戦であったと思います日には郡大会があります。子供達よ!いい結果を残せるように、またオヤジ達を泣かせてやってください目指せ!県大会!!「世紀に間に合いました」数年前、こんな印象的なキャッチコピーで登場したトヨタ「プリウス」の入庫です症状は、走行中勝手に右のウィンカーランプが点いてしまうとのことです症状を確認すると、確かに右側のウィンカーランプが時々、点灯?と、言いますか連打のように点滅していますジワァっと点いています早速、配線図を手配し、点検開始です。通常の車両と異なりウィンカーの回路(フラッシャー)が右と左で完全に独立しています。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


アスキーアートを貼る場合は、
AAの直前に<span class="aa">、AAの直後に</span>を追加するといい感じになるかもです。
投稿ボタンを押してから、投稿完了までに少し時間がかかります。

アーカイブ

最近のトラックバック

携帯版

http://addressclub.net/mt4i/
Powered by MT4i

About

2008年8月20日 20:52に投稿されたエントリーのページです。

ひとつ前の投稿は「意地(泣き)のテスト最終章:日時指定投稿編」です。

次の投稿は「そばめしに謝れ」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。