本サイトではアフィリエイト広告を利用しています
HTTPリクエストのタイムアウト生成

コード

HTTPリクエストのタイムアウトを作り出すテスト

2020年6月22日

WordPress などのプラグイン作成、chrome などのプラグイン作成ではよくあることですが、HTTP リクエストのタイムアウト時の挙動をチェック、自分の環境でそれを作り出す必要がありました。まず、わざとサービスやらデーモンに不具合を生じさせてテストする方法が考えられます。
でも、私のようなズボラなタイプ、とにかく自分で書いたコードの結果がどうなるのか知りたいという人は、その環境をあらかじめ準備したり、デーモンの不具合を作り出すのも気が乗りません。
そこで、PHP のコードを調べていたら、別に特別なことをしなくても簡単に応答遅延をシミュレートできることに気づきました。

PHP で遅延応答を作り出すには

下の簡単すぎるコードで十分対応可能でした。

 php
<?php
	// わざと反応を10秒間遅らせます。
	sleep(10);
	echo 'Too Busy';
	// テキストファイルの読み込み
	echo file_get_contents('./response.txt', true);
?>

巷の多くのコードを読んでみても、タイムアウトの対応までしか行っていないようですので、まずはタイムアウト処理をしっかりしておきます。

上のスクリプトを書いて、PHPでサーバーを起動、ローカルでリクエストのテストを行います。

 bash
php -S 192.168.1.11:8080

chrome などで http://192.168.1.11:8080 にアクセスして、プラグインの挙動をチェックします。

ローカルホストで行う方法もあります。

 bash
php -S localhost:80

アクセスは http://localhost/ になります。ローカルと IP へのアクセスを別々に対応させているプラグインなどを書く場合は、両方でのプログラム、コードのふるまいの確認が不可欠です。

さらに厳密にテスト環境を考えるなら、サービスがダウンの場合、トラフィックが多すぎる場合、コードがそのものに不備がある場合などをシミュレーションする必要がありますが、いずれにせよ、まず対応すべきはサーバからの応答が遅すぎる場合のふるまいです。余裕があれば、再度応答があったときの処理を書いて、余裕がなければそのまま接続を閉じるようなコードは最低限書いておくようにします。

-コード
-, ,