<?php
if (substr(PHP_OS, 0, 3) == 'WIN') {
$ping = 'ping -n 5 ';
} else {
$ping = 'ping -c 5 ';
}
$ping .= 'yandex.ru';
$ph = popen($ping, 'r') or die('popen() failed');
$output = '';
while ($buf = fgets($ph, 1024)) {
$output .= $buf;
}
$ec = pclose($ph);
echo 'cmd: ' . $ping . '<br />';
echo 'exit code: ' . $ec . '<br />';
echo 'output:' . '<br />';
echo nl2br($output);
?>
Исходя из недавнего топика, safe_mode == On => кроссплатформенно попингать не выдет. Только под виндами.exit code: 127
Блин, с этого и надо было начинатьИменно пинговать не обязательно.
$port=80;
$fp=fsockopen($host,$port);
if(!$fp){
echo 'Сервер ', $host, ' не отвечает';
}
else{
fputs ($fp, "HEAD ".$path." HTTP/1.0\r\nHost: ".$host."\r\n\r\n");
$response = fgets($fp, 1024);
print $response;
}
if(empty($host)){$host="www.site.ru";};
if(empty($path)){$path="/";};
if(empty($port)){$port=80;}
print "host=".$host."<br>\n";
print "port=".$port."<br>\n";
$hostbyname=gethostbyname($host);
print "gethostbyname(".$host.")=".$hostbyname."<br>\n";
$hostbyaddr=gethostbyaddr($hostbyname);
print "gethostbyaddr(".$hostbyname.")=".$hostbyaddr."<br>\n";
print "<hr>\n";
$fp=fsockopen($host,$port,&$errno,&$errstr);
if(!$fp){
echo "$errstr ($errno)<br>\n";
}else{
fputs($fp,"GET / HTTP/1.0\n\n");
while(!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
host=www.site.ru
port=80
gethostbyname(www.site.ru)=217.23.МОЙ.АДРЕС
gethostbyaddr(217.23.МОЙ.АДРЕС)=localhost
--------------------------------------------------------------------------------
HTTP/1.1 200 OK Date: Sun, 06 Nov 2005 09:00:35 GMT Server: Apache/1.3.26 (Unix) PHP/4.3.3 .......
$fp=fsockopen($host,$port,$errno,$errstr,$timeout);