bitcoind が RPC に応答しない

8 件のメッセージ BitcoinTalk mtgox, サトシ・ナカモト, The Madhatter, Coinbuck @ BTCLot 2010年7月23日 — 2011年6月24日
mtgox 2010年7月23日 03: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