詳しい調査はしていないが、HTTP 1.1 でサーバ側から自前でレスポンスを返した場合(200応答以外の404などのレスポンスのときに起きた)に、クライアント側の file_get_contents() の返りが遅いという問題が起こるようだ。 原因は HTTP 1.1 では KeepAliveがデフォルトで有効になるが、file_get_contents の側ではTCPコネクションのクローズまで待ってしまうことにあるようだ。 これは本来、リクエストしている file_get_contents の側で何とかするのが正しい対応かと思うが、どうも方法がよくわからない・・・ というわけでとりあえず、サーバー側で header('Connection: close'); として明示的にセッションのクローズを宣言することで回避できた。 後で調べたところ、サーバ側からレスポンスする HTTP のバージョ