ビットコイン・インスティテュート

bitcoindがRPCに応答しない

8件のメッセージ BitcoinTalk mtgox, サトシ・ナカモト, The Madhatter, Coinbuck @ BTCLot 2010年7月23日 — 2011年6月24日
mtgox 2010年7月23日12:29 UTC

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日16:25 UTC

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

The Madhatter 2010年7月23日16:39 UTC

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

mtgox 2010年7月23日16:47 UTC

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

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

mtgox 2010年7月23日18:14 UTC

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

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

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

Coinbuck @ BTCLot 2011年6月24日23:53 UTC

1年後の今、私も同じ問題に遭遇している……

Windows 7 + 最新のbitcoinクライアント

これを使っている。https://en.bitcoin.it/wiki/PHP_developer_intro