使用PHP自动PING IP,校检网络连接是否正常!
$server = 'ping kalvin.cn -n 1';
$last_line = exec($server, $arr);
echo "$last_line"; //最后总结结果
print_r($arr); //PING命令详细数据数组
?>
PHP代码
// Checksum calculation function
function icmpChecksum($data)
{
if (strlen($data)%2)
$data .= "/x00";
$bit = unpack('n*', $data);
$sum = array_sum($bit);
while ($sum >> 16)
$sum = ($sum >> 16) + ($sum & 0xffff);
return pack('n*', ~$sum);
}
// Making the package
$type= "/x08";
$code= "/x00";
$checksum= "/x00/x00";
$identifier = "/x00/x00";
$seqNumber = "/x00/x00";
$data= "Scarface";
$package = $type.$code.$checksum.$identifier.$seqNumber.$data;
$checksum = icmpChecksum($package); // Calculate the checksum
$package = $type.$code.$checksum.$identifier.$seqNumber.$data;
// And off to the sockets
$socket = socket_create(AF_INET, SOCK_RAW, 1);
socket_connect($socket, "www.google.com", null);
// If you're using below PHP 5, see the manual for the microtime_float
// function. Instead of just using the m
// icrotime() function.
$startTime = microtime(true);
socket_send($socket, $package, strLen($package), 0);
if (socket_read($socket, 255)) {
echo round(microtime(true) - $startTime, 4) .' seconds';
}
socket_close($socket);
?>