Web: 2008年8月アーカイブ
PEARのHTTP_Requestはhttp通信が簡単に行える使い勝手のいいクラスなのでよく使いますが、レスポンスが保証されていないWeb APIとのやり取りなんかでタイムアウト時間を設定したいことがあります。
そんな時にtimeoutオプションを指定してみるのですが、時間通りストップしたりしなかったりと動作が今一つ不安定でした。
Pear パッケージ HTTP_Request - どうにかなるBLOG
こんな記事も見かけたりして、これはいよいよソースに手を加えないとだめかな・・・と思っていたところ、PEAR公式マニュアルを眺めていたら、readTimeout という知らなかったオプションを発見。
require_once 'HTTP/Request.php';
$url = "http://www.example.com/";
$option = array(
"timeout" => 10, // 接続Timeout秒数
"readTimeout" =>
array(10, 0) // ソケット読み書きTimeout秒数
);
$http = new HTTP_Request($url, $option);
$http->sendRequest();
$body = $http->getResponseBody();
print_r($body);
おぉ、なんだか期待していたような動き!
それぞれのオプションについては、
- timeout 通信先とのコネクション確立までのタイムアウト設定(秒
- readTimeout 接続後のパケットやり取りする時間のタイムアウト設定(秒、ミリ秒)
ということと理解しておきました。
やっぱりマニュアルはちゃんと読まないとな。