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

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

コメントを投稿


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

アーカイブ

最近のトラックバック

携帯版

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

Technorati

Technorati search

» ここにリンクしているブログ

  twitter   Update
hotaniya: タイヤ洗って乾燥中。もうだめ、疲れた。潔く昼寝る。
on 11 Mar 2010 13:39
hotaniya: なんだか専門学校とか英会話教室とか料理教室でもゴネれば無料化されそうな流れですね。
on 11 Mar 2010 12:47
hotaniya: 車検は終了。帰ってカリー喰ったら冬タイヤ収納する。
on 11 Mar 2010 11:50
hotaniya: 何故か営業担当さんが再来週に発電プーリを交換しましょうとやってきた。許す。
on 11 Mar 2010 11:49
hotaniya: エスティマの発電プーリ交換の件、今回は見送らせてください、だと。夏場になったらガラガラ言うって言ったらその時にまた見ましょうだってさ。トヨタ割と相変わらずかも。
on 11 Mar 2010 11:16
hotaniya: レッツゴー車検
on 11 Mar 2010 09:25
hotaniya: 鳩山「国民の皆さんにも、そういった人たち(外国人労働者など)にまで(子ども手当が)という思いはあろうかと」 自覚あるのか・・・
on 11 Mar 2010 08:35
hotaniya: 個人献金全額控除だったらやらない方がどうかしてるって話になりそうなのですが、一番のオススメは自称兼業政治家を名乗って自分自身に献金する鳩山式節税術ですな!
on 11 Mar 2010 08:23
hotaniya: 交換する夏タイヤを車に積み込んできた。大変なのは交換後、冬タイヤを2階に運び込むお仕事。
on 11 Mar 2010 07:54
hotaniya: 夜はチキンカリー http://movapic.com/pic/201003101948164b9778f0abb2f
on 10 Mar 2010 19:48
hotaniya: RT @gt4y : 自民党本部に電話した続き「国民は民主党の法案を心配しています。体を張ってでも阻止してください。これからも電話していいですか?」政策担当氏「はい。貴重な情報をありがとうございます。」ということで、新たな動きは即、電話して良いそうです。
on 10 Mar 2010 18:58
hotaniya: TS歌屋wwwこの発想はなかった RT @555hamako : そんなー もう暗くなったので、ノルマ達成してませんが、TS歌屋によってかえります。 メルマガも宜しくお願いします。 だう!!
on 10 Mar 2010 18:36
hotaniya: 駐車場が乾いたら車に夏タイヤ積み込む。明日の車検で同時にタイヤ交換するっぽ。
on 10 Mar 2010 13:35
hotaniya: 今日15度まで上がるって嘘よねー。
on 10 Mar 2010 13:30
hotaniya: @HijonoP まじでー。
on 10 Mar 2010 13:29 in reply to HijonoP
hotaniya: 最近は酒屋さんも萌えなんですか。こんなラベルのお酒もありました。 http://movapic.com/pic/201003101309454b971b89273f7
on 10 Mar 2010 13:09
hotaniya: 伝堂(大泉学園)のつけ麺。濃厚なスープとモチモチ太麺がウマー http://movapic.com/pic/201003101248374b9716956ca90
on 10 Mar 2010 12:48
hotaniya: 同じく。毎朝神棚に民主党の国賊が天誅喰らうよう祈念してます QT @premierstar : 民主党の奴ら全員今すぐ死んだらいいのにっていつも思う。これ普通の感覚だと思ってるんだけどね。
on 10 Mar 2010 12:45
hotaniya: 大泉学園の伝堂リベンジ。最近つけ麺率高いな…
on 10 Mar 2010 12:11

About

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

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

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

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