他のBlogに対してtrackbackトラックバックを送信した際、編集画面に
"One or more errors occurred when sending update or TrackBack pings."と表示され、
ログにも
"Ping 'http://nanitozo.com/log/euri/mt-tb.cgi/xxx' failed: HTTP error: 500 read timeout"
というエラー表示が残っている事があります。
さらに、自分の方ではping送信に失敗したと表示されているので、何度も繰り返しping送っていたら、何故か相手方では正しく処理されていた為、相手の記事のtrackback表示欄には自分のBlogからのtrackbackが連発されてしまっていたりします。
そんなわけで、いろんなBlogで、同じ相手からのtrackbackが連打されている様がみかけられるわけです(笑
何故こんな事がおきるのか? またその解決方法を調べてみました。
phil ringnalda dot com > HTTP error: 500 read timeout
http://philringnalda.com/blog/2003/02/http_error_500_read_timeout.php
に判りやすく情報が整理されていたので、参考にさせてもらいました。
まず、trackback ping(trackbackを通知する為のping)送信の仕組みを見てみます。そもそも、pingなどという奇怪な名称がつけられていますが、基本的には相手側のCGIを呼び出してるだけだったりします。その意味では、trackback pingもupdate ping(更新情報通知用のping)も同じ事をしている、と言って良いでしょう。
Movable Type同士だと解説がごちゃごちゃしそうなので、Movable Typeから、weblogs.comにpingで更新情報を送信する例を挙げます。
step1. Movable Typeからweblogs.comに、更新情報をpingで送信
step2. 受け取ったpingに問題が無ければ、weblogs.com 側はデータを更新
step3. weblogs.comからMovable Typeに、エラー無く処理できましたというNon-error返答pingを送信
step4. Non-error pingを受け取ったらMovable Typeはpingが成功したと判断
というような段階を踏んで、trackbackは送信されているわけです。
ここで、重要なのは受信側のweblogs.com側ではstep2でデータは更新され、ping受信が成功したと判断されるのに対し、送信側のMovable Type側ではstep4まで進まないとping送信が成功したと判断されない、ということです。
例えstep4で失敗しても、step2で既に受信の成功が確定した受信側のweblogs.comにとっては関係ないわけです。
つまり、何らかの問題が発生してstep4が実行されない場合、ping送信側がエラーで ping受信側は受信成功という事態になってしまうわけですね。最初に書いた自分のMovable Typeはping失敗の表示が出ているのに、trackbackの送信先は問題なく動作しているというのはこういう事だったわけです。
では、何故、step2まではうまくいくのにstep4で失敗しているのかと言うと、最初にpingを送信したMovable Typeが、相手からの確認のpingを受信するのを一定時間しか待っていないから、というのが多いようです。最初の送信から一定の時間が経過すると、Movable Typeは送信が失敗した、と判断して、時間切れ=タイムアウトエラー画面を表示するわけです。
例え、その後に相手からちゃんと確認のpingが届いても無視です。相手がデートの待ち合わせに遅れると速攻で帰る人っていますよね。Movable Typeもそんな感じで、けっこう時間に厳しいヤツなんです。
解決方法としては、相手からの返事をもうちょっと待つように性格を改造してやればいいでしょう。人間と違って、プログラムであるMovable Typeは設定ファイル mt.cfg を使えば簡単にいくらでも設定を変更できます。
確認用のpingを待っている時間は、mt.cfg ファイル内の 「PingTimeout」ディレクティブで設定できます。
初期設定ではこの設定項目はコメントアウトされていて、初期値の「15」が適用されています。この場合、Movable Typeは15秒の間しか相手からのPingの返答を待たないわけです。
ここのコメントアウトをはずしてやって、
PingTimeout 30 とかに変更してやれば、エラーは相当軽減されるようです。
大変、わかりやすい説明ありがとうございました。
Posted by: pico at January 24, 2004 11:24 AMPing timeoutではない
下記のような エラーが出るのですが
もしよろしかったら 教えていただけますか?
Ping 'http://www.mylog.jp/cgi-bin/mt-tools/mt-tb.cgi/341' failed: HTTP error: 500 Can't locate HTML/HeadParser.pm in @INC (@INC
はじめまして。
こちらにはgoogleで failed: HTTP error: 500 read timeout と打ち込みましてたどりつきました。
何故相手方には問題なくトラックバックがうてているのかがわからなかったのですが、こちらの説明は非常にわかりやすく、とても助かりました。
本当にありがとうございました。