Drowsy Dog's Diary

any note, any thought

2014年1月8日
by kazoo
0 comments

[php] HTTP POST のレスポンスをストリームとして扱う

※ PHPさっぱりわからん人のメモですゆえ注意。

pear の HTTP_Request2 を使って POST して、 Response body に Base64 されたバイナリデータをこんな感じに受け取っていたのだけど、

あるときこのレスポンスが数百MB になって、Response.php の中でメモリ不足で落ちるように。

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 131334946 bytes) in /usr/lib/php/pear/HTTP/Request2/Response.php on line 364

ほんで、これストリームとして扱うのはどうするんじゃろ、と調べた結果。
HTTP_Request2 のままでは無理そうな感じ。
ファイルに落とすのは stream_copy_to_stream がラクそうだった。
いろいろ自信はない。

参考:
http://stackoverflow.com/questions/20440269/how-to-get-an-http-response-as-a-stream-in-php
http://stackoverflow.com/questions/19589154/php-stream-get-all-http-request-headers