PEAR::HTTP_Requestでタイムアウト時間を指定する
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 接続後のパケットやり取りする時間のタイムアウト設定(秒、ミリ秒)
ということと理解しておきました。
やっぱりマニュアルはちゃんと読まないとな。
- 3キャリア別にフォーム入力モードを切り替えるカスタムヘルパー - 2009年4月03日
- オブジェクトのシリアル化についてのメモ - 2009年3月12日
- askeet 4日目 - 2009年2月24日
- symfonyでPDO接続をする - 2009年2月18日
- Amazonランキングのカテゴリー切り替え - 2008年3月06日
トラックバック(0)
このブログ記事を参照しているブログ一覧: PEAR::HTTP_Requestでタイムアウト時間を指定する
このブログ記事に対するトラックバックURL: http://blog.knockoutmarch.com/mt3/mt-tb.cgi/163
great!!