download this file: run-http.php view text/plain: run-http.php file encoding: UTF-8 [goback]
<?php
##
##
function parse_conf($file)
{
$conf = @parse_ini_file($file,TRUE);
$names = array_keys($conf);
foreach($names AS $name)
{
if(!$s = $conf[$name]['server']) continue;
if(is_array($s)) $tmp = implode(' ',$s);
$tmp = preg_split('/[\s,]+/',$tmp);
$conf[$name]['server'] = array_unique($tmp); // rewrite
}
return $conf;
}
$cdir = dirname(__FILE__);
require_once $cdir.'/class.socket.http.php';
$conffile = $cdir.'/list.conf.ini';
$wdir = '/data/www/127.0.0.1/latency2';
## core default
##
$_method = 'HEAD';
$_connect_timeout = 5;
$_connect_retry = 1;
$_connect_port = 80;
$_read_timeout = 10;
$conf = parse_conf($conffile);
$method = $conf['global']['method'];
$connect_timeout = (int)$conf['global']['connect.timeout'];
$connect_retry = (int)$conf['global']['connect.retry'];
$connect_port = (int)$conf['global']['connect.port'];
$read_timeout = (int)$conf['global']['read.timeout'];
unset($conf['global']);
## set global and overwrite
##
$_method = $method ? $method : $_method;
$_connect_timeout = $connect_timeout ? $connect_timeout : $_connect_timeout;
$_connect_retry = $connect_retry ? $connect_retry : $_connect_retry;
$_connect_port = $connect_port ? $connect_port : $_connect_port;
$_read_timeout = $read_timeout ? $read_timeout : $_read_timeout;
//print_r($conf);
//exit;
foreach($conf AS $site=>$arr)
{
$url = $arr['url'];
$servers = $arr['server'];
if(!$url && !$arr['server']) continue;
if(!$servers) $servers[] = ''; // dnslookup
$method = $arr['method'] ? $arr['method'] : $_method;
$connect_timeout = $arr['connect.timeout'] ? $arr['connect.timeout'] : $_connect_timeout;
$connect_retry = $arr['connect.retry'] ? $arr['connect.retry'] : $_connect_retry;
$connect_port = $arr['connect.port'] ? $arr['connect.port'] : $_connect_port;
$read_timeout = $arr['read.timeout'] ? $arr['read.timeout'] : $_read_timeout;
foreach($servers AS $ip)
{
list($timeinfo,$h,$tsize,$ip,$uri) = socket::http($url,$ip,$connect_port,$method,$connect_timeout,$connect_retry,$read_timeout);
if($h)
{
/*
socket::getms($_cs,$_ce), // connect time
socket::getms($_ws,$_we), // write(request) time
socket::getms($_we,$_fb), // first byte time, server latency think time
socket::getms($_we,$_ee), // response time
socket::getms($_cs,$_ee) // total time
*/
//list($ct,$wt,$fb,$rt,$tt) = $timeinfo; // connect,write,first.byte,response,total
$tt = implode(',',$timeinfo);
}
else $tt = 'ERROR';
$pdata = date("Ymd\tH:i")."\t[$site]\t".sprintf("%-20s\t%-20s\t",$ip,$tt)."$tsize\t".$h['status'];
$turl = $url ? $url : "http://$ip$uri";
echo "$pdata $method $turl\n";
//file_put_contents("$wdir/$ip.url.txt",$pdata."\n",FILE_APPEND|LOCK_EX);
}
}
exit(0);
?>