top

二重トラックバックを送らないために

超個人的な覚え書きですが…。
これはトラックバックを受ける時ではなくて、送信する時の注意です。

トラックバックの送信はよく失敗します。というか、これまでに送ったトラックバックで「失敗しました」エラーが出なかったものなんて無い、というくらい常に失敗します。それはもう成功するのは自分のブログに向けて送った時くらいのもの、ってほどに。
しかしエラーが出ても実際には先方では成功している場合がほとんどです。というか、「失敗しました」エラーが出たもので、本当に失敗したものなんて1つもなかった、というくらいの100%を誇る成功率です、ええ(笑)。

これは先方がトラバを受けるのに時間がかかって、一定時間が過ぎるとこちらのMTがタイムアウトと見なしてエラーを返すようになっているからみたいです(間違ってたら訂正下さい)。そのため、時間がかかっているだけで、実際には成功しているケースがほとんどのようなのです。
それは私も分かっているので、エラーが出ても慌ててトラバを送り直すことはしません。しばらく時間が経って、先方のトラバ欄にリンクが出たのを確認して終了とします。ところが注意していても、うっかり2重に送ってしまうことがあるんですね。

トラバを送ると、下のように、成功したらトラバ欄に書き込んだ送信アドレスが消えるんですが、

060108_1.gif → 060108_2.gif

失敗すると、消えずに残ったままになっているんです。で、その後、変換ミスを発見したりして修正しようとして、うっかりこれをそのままにした状態で保存すると、その瞬間、トラックバックがもう1回送られてしまい、「あああッ、やっちまったあ~~~」と叫んだ時はもう後の祭り。
それだけでなく、トラバ失敗の後、他の頁を見てからMTの管理画面を開き直したら、ブラウザが覚えていたのか、イキナリ送信画面になって「やっちまったあああ~~」と叫んだことも。

それで今は、トラバを送ってエラーが出た場合は、成功したかどうか確かめる前に、いったんトラバ欄に残ったアドレスを消してエントリーを保存し直してから他の行動に移るようにしています。もし本当に失敗していたのなら、また最初からやり直せばいいことですから。


■おまけ:mt-config.cgiの修正方法
タイムアウト時間を延ばす方法があります。mt-config.cgiの304行目にトラックバックのタイム設定をする箇所があるので、#を取って赤字の数字部分を大きな値にしてやります。

# PingTimeout 20
    ↓
PingTimeout 60

こうすれば20秒しか待ってくれなかったものが60秒は待ってくれるようになるので、送信先が60秒以内に処理が終るブログならエラーが出なくなります。…が、実際にはもっと再構築に時間がかかるブログの方が多いようなので、気休め程度かなというのが正直な気持ちです。これまでに送った中では反映されるまで1日かかったところもありましたものねえ…。

ので、そこを修正するしないに関わらず、「トラバ送信後は必ずトラバ欄を空にして保存し直してからウインドウを閉じる」を実行するのが確実です。

(2006年3月16日追記)