PHPのプログラム中で、別のサーバに接続する際、タイムアウトを適切に設定していない場合や、データ取得時にタイムアウトを設定できない場合もあるかと思います。そんなときに、まず先に接続先が生存しているかを確認しておくと、エラー処理の判定もしやすくなると思います。
そこで、接続を開始する前に事前に接続先のサーバに接続を試行してみます。
※PHP5.0以前の環境ではこのまま実行すると、throwの部分で構文エラーになる可能性があります。その場合はバージョン判定部分とthrow new Exceptionの部分を取り除いてください。
PHP:
-
/**
-
* $hostname が接続先として接続応答出来る状態かを確認します。
-
*
-
* @access public static
-
* @param string $hostname 接続先ホスト名またはIP
-
* @param int $port 接続先ポート番号
-
* @param int $timeout タイムアウトを指定する(秒)
-
* @return boolean
-
*/
-
function isAliveHost($hostname, $port = 80, $timeout = 5)
-
{
-
}else{
-
throw new Exception('Hostname is empty.');
-
}
-
}
-
-
// port番号指定がint型以外、あるいはintの範囲外である場合はfalseを返します。
-
}else{
-
throw new Exception('Invalid port number: ' . $port);
-
}
-
}
-
-
// port番号が65535を超える場合は、不正な値とみなし、falseを返します。
-
if($port <0 || $port> 65535){
-
}else{
-
throw new Exception('Invalid range of port number: ' . $port);
-
}
-
}
-
-
if(!$fp){
-
return false;
-
}
-
-
return true;
-
-
}
使い方は以下の通り
PHP:
-
<?php
-
if(isAliveHost('www.google.co.jp', 80)){
-
}else{
-
}
PHP:
-
<?php
-
if(!isAliveHost('mfsmax.docomo.ne.jp', 25)){
-
}
No TweetBacks yet. (Be the first to Tweet this post)
Related posts:
- PreparedなINSERT文を簡単に作る方法 PHPでWebアプリケーションなどを開発していて、SQL文を発行する際に、セキュア面や利便性などから、ADODBやPDOなどを用いて、Prepared Statementを使うSQLを書くこともあると思います。 その際、 [...]...
関連記事はYARPP関連記事プラグインによって表示されています。