function checkStatus($url) {
$agent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; pt-pt) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27";
// initializes curl session
$ch = curl_init();
// sets the URL to fetch
curl_setopt($ch, CURLOPT_URL, $url);
// sets the content of the User-Agent header
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
// make sure you only check the header - taken from the answer above
curl_setopt($ch, CURLOPT_NOBODY, true);
// follow "Location: " redirects
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// disable output verbose information
curl_setopt($ch, CURLOPT_VERBOSE, false);
// max number of seconds to allow cURL function to execute
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
// execute
curl_exec($ch);
// get HTTP response code
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpcode >= 200 && $httpcode < 300)
return true;
else
return false;
}
// how to use
//===================
if ($this->checkStatus("http://www.dineshrabara.in"))
echo "Website is up";
else
echo "Website is down";
exit;
8条答案
按热度按时间ldxq2e6h1#
像这样东西应该有用
mu0hgdu02#
curl -Is $url
只输出标头。grep HTTP
过滤器到HTTP响应标头。cut -d ' ' -f2
将输出修剪为第二个“字”,在本例中为状态代码。示例:
j2qf4p5b3#
vhmi4jdf4#
我是这样做的:我设置了用户代理,以最大限度地减少目标班宁我的可能性,并且禁用了SSL验证,因为我知道目标:
wyyhbhjk5#
你看过get_headers()函数吗?http://it.php.net/manual/en/function.get-headers.php。它似乎完全满足了你的需要。
如果直接使用curl和-I标志,它将返回HTTP头(404等)而不是页面HTML。在PHP中,等效的选项是
curl_setopt($ch, CURLOPT_NOBODY, 1);
。py49o6xq6#
ping
不会执行您要执行的操作--它只会告诉您机器是否已启动(并对ping
做出响应),但这不一定意味着Web服务器已启动。你可以尝试使用http_head方法--它会检索web服务器发回的头文件。如果服务器发回头文件,那么你就知道它已经启动并运行了。
nwlls2ji7#
你不能用
ping
测试一个web服务器,因为它是一个不同的服务。服务器可能在运行,但是web服务器守护进程可能会崩溃。所以curl是你的朋友。忽略它的内容。ohtdti5x8#
此函数用于检查URL是否存在。检查时间最长为300ms,但您可以在cURL选项
CURLOPT_TIMEOUT_MS
中更改该参数你可以检查任何网址,从域,ip地址到图像,文件等,我认为这是最快的方法,证明是有用的。