2015-08-27 62 views
0

我有这样的代码:如何知道一个网站重定向到其他

<?php 

function ping($host, $port, $timeout) { 
    $tB = microtime(true); 
    $fP = fSockOpen($host, $port, $errno, $errstr, $timeout); 

    if (!$fP) { 
     return "down"; 
    } 

    $tA = microtime(true); 

    return round((($tA - $tB) * 1000), 0)." ms"; 

} 

呼应的结果将显示任一“下”,如果主机不可达或平的结果,如果它是。

echo ping("fernando.ki2.co", 80, 10); 

?> 

如果ping重定向到/404.html文件,我需要写入。如果没有,则采用子域名;如果是,子域是免费的。

任何人都可以帮助我吗?

+0

的Ping仅当服务器是活动的检查。没有可用的内容iirc –

+0

'fSockOpen'不能被“重定向”,因为它使用的是IP,而不是HTTP。即使您使用HTTP协议,您也要监视404状态*,无论页面重定向到哪个URL,因为不同的服务器可能会返回不同的响应。 – Amadan

回答

0

这样你就无法获得http状态码。

但是,您可以使用cURL。

http://php.net/manual/en/book.curl.php

这将让PHP直接使一个HTTP请求到远程服务器。请求发出后,您可以分析返回的数据,状态码和其他所有内容。

这个例子说明如何获取状态代码:

<?php 

$ch = curl_init("http://www.example.com/"); 

curl_setopt($ch, CURLOPT_HEADER, 0); 

curl_exec($ch); 
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE) 

echo $http_code; 

?> 
+0

尽管他称他的功能为'ping',但它并没有进行真正的ping。它打开一个TCP连接,不使用ICMP Echo。 – Barmar

+0

@Barmar的确如此!我有正确的答案,谢谢! – Marcovecchio

相关问题