<?php
// Client
// 设置错误处理
error_reporting (E_ALL);
// 设置处理时间
set_time_limit (0);
$ip = $argv[1]; // IP 地址
$port = $argv[2]; // 端口号
echo "try to connected to $ip:$port./r/n";
if($argv[3]>1000)
{
echo 'PHP use socket select,max connection is 1000'."/n";
$argv[3]=1000;
}
for($i=0;$i<$argv[3];$i++)
{
$socket[$i] = @socket_create (AF_INET, SOCK_STREAM, SOL_TCP); // 创建一个SOCKET
if (!$socket[$i]){
echo "$i socket_create() failed:".socket_strerror ($socket[$i])."/n";
$i--;
usleep(500000);
continue;
}
socket_set_option($socket[$i],SOL_SOCKET, SO_SNDTIMEO, array( "sec"=>0, "usec"=>250000 ) );
socket_set_option($socket[$i],SOL_SOCKET, SO_RCVTIMEO, array( "sec"=>0, "usec"=>250000 ) );
socket_set_option($socket[$i],SOL_SOCKET,SO_REUSEADDR,1);
$conn[$i] = @socket_connect ($socket[$i], $ip, $port); // 建立SOCKET的连接
if (!$conn[$i])
echo "$i connect failed!/n";
usleep(2000);
}
echo "TOTAL Created [$i]/n";
$rlen=0;
$wlen=0;
$rm=0;
$wm=0;
$m=1024*1024;
while (true)
{
for($i=0;$i<$argv[3];$i++)
{
$wlen+=socket_write($socket[$i], "W", 1);
$rlen+=strlen(socket_read($socket[$i], 128));
usleep(1000);
}
if($rlen>$m)
{
$rm+=floor($rlen/$m);
$rlen=$rlen%$m;
}
if($wlen>$m)
{
$wm+=floor($wlen/$m);
$wlen=$wlen%$m;
}
print $rm.'->'.$rlen.' '.$wm.'->'.$wlen."/n";
echo "Time: ".date("Y-m-d H:i:s")."/n";
sleep(1);
}
?>
使用方法:/usr/local/php/bin/php c.php *.*.*.166 13800 1000