F.Ko-Jiの「一秒後は未来」

PEARのHTTP_OAuthでタイムアウトを指定する

最近TwitterのAPIが重いことが多いです。同期的に処理するにしろ非同期で処理するにしろ、いつまで待ってもレスポンスが返って来ないAPIの応答を待ち続けるのはリソースの面から見ても好ましくありません。

というわけで可能ならば PEAR の HTTP_OAuth を使う際にタイムアウトを設定しておきます。以下は timeout に 10 秒を指定する例です。

// HTTP_OAuth_Consumer
$consumer = new HTTP_OAuth_Consumer($consumerKey, $consumerSecret);

// HTTP_Request2
$http = new HTTP_Request2();
// 10秒を設定
$options = array(
                 'timeout' => 10,
                 );
$http->setConfig($options);

// HTTP_OAuth_Consumer_Request
$consumerRequest = new HTTP_OAuth_Consumer_Request;
$consumerRequest->accept($http);

$consumer->accept($consumerRequest);

HTTP_OAuth_Consumer は何も指定しなければデフォルトの設定で HTTP_Request2 を呼び出します。ソースを見ると HTTP_Request2 の timeout の初期値は 0 になっていますが、これは「タイムアウト制限なし」なのでPHPの処理がタイムアウトになるまで応答を待ち続けることになります。

リクエストがタイムアウトすると例外が発生します。この時 throw される例外は HTTP_Request2_Exception ですが、HTTP_OAuth_Consumer_Request の中で catch されると HTTP_OAuth_Exception として throw されます。

HTTP_Request2で設定可能なオプションや初期値は以下を参照してください。

» Manual :: Configuration parameters for HTTP_Request2

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など