bitcoindがRPCに応答しない

7 件のメッセージ BitcoinTalk mtgox, サトシ・ナカモト, The Madhatter 2010年7月23日 — 2010年7月24日
mtgox 2010年7月23日 原文 · 個別ページ

bitcoindが時折RPCに応答しなくなります。PHPから呼び出しており、以下のエラーが発生します:

Warning: fopen(http://127.0.0.1:8332) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error

ローカルのWindowsマシンでは頻繁に発生し、Linuxサーバーではそれほど頻繁ではありません。

同じ問題を経験した方はいますか?

mtgox 2010年7月23日 原文 · 個別ページ

まあ95%の確率で動くのが奇妙なんだが。

奇妙だ。PHPからbitcoindをほぼ毎日使っているが、そんなことに遭遇したことがない。

mtgox 2010年7月23日 原文 · 個別ページ

無効なビットコインアドレスを送信するたびにも発生する。接続に影響するとは思えないので奇妙だ。

正しく覚えていれば、500はJSON-RPCのエラーレスポンスに規定されたステータスコードだ。応答のボディにはエラーの説明を含むJSONレスポンスがあり、例えば{“result”:"",“error”:“bitcoin address not found”,“id”:“1”}のようなものだ。

mtgox 2010年7月23日 原文 · 個別ページ

変だな。PHPのfopen()はレスポンスが500だと死ぬのだろうか?

無効なアドレスのようなエラーは通常のレスポンスとして、ただ「送信されていない」とすべきで、レスポンス文字列をチェックできるようにすべきだと思う。500エラーはサーバー自体にエラーがある場合のものだと考えている。

HTTP経由のJSON-RPCで、応答がエラーの場合にステータス500を使うべきかどうか、確認できる方はいるだろうか?どこでそれを知ったか思い出せず、間違っているかもしれない。HTTPリクエスト自体のメカニズムに問題がない限り、200の方が理にかなっているように思える。(もしかしたら、そういう意味だったのに忘れて500をすべてのエラーレスポンスに適用してしまったのかもしれない)