2010-10-20 25 views
1

我试图使用PHP来建立一个基本的“状态”页面,它会告诉我的用户各种服务(我们使用的网页)是否至少提供页面(这不是100%工作,但其相当不错的指标)的担保测试网页是否通过php进行响应

什么,我想要做的是一样的东西

www.domainname.com/mediawiki/index.php并确保返回的页面或不

我很新的PHP所以即时通讯甚至不知道我在找什么功能。

感谢

+0

不要忘记你采取的任何解决方案,你可以“玩”超时。例如,file_get_contents可以直接在第三个参数中设置函数超时。请参阅:http://php.net/manual/fr/function.file-get-contents.php – Cybrix 2010-10-20 18:25:50

回答

5

有办法使用内置的PHP函数来做到这一点(例如的file_get_contents),但他们都不是很好。我建议你看看优秀的cURL库。这可能会指向正确的方向:Header only retrieval in php via curl

既然你只是想看看一个页面是“up”,你不需要请求整个页面,你可以使用HEAD请求获取标题为这一页。

+0

为什么'file_get_contents'不适合这个目的? – webbiedave 2010-10-20 18:11:04

+2

file_get_contents在许多共享主机系统上处于禁用状态,并且返回的数据超过您确定页面是否可用的情况。 – 2010-10-20 18:12:01

+0

确实如此,但你会惊奇地发现有多少脚本被写入头部(被误导)。另外,您可以设置file_get_contents来执行HEAD请求。无论哪种方式,我建议搜索返回的来源为一个特定的字符串更好的决心。 – webbiedave 2010-10-20 18:14:41

0

退房file_get_contents

它将返回网页源为一个字符串。通过这种方式,您甚至可以搜索字符串以获取特定值(如果需要),以获得更精细的结果。 这可以是非常有用的情况下内容仍然返回,但是某种错误消息。

$somePage = file_get_contents('http://www.domainname.com/mediawiki/index.php'); 
// $somePage now contains the HTML source or false if failed 

在php.ini确保allow_url_fopen = On

如果您需要检查响应头,你可以使用$http_response_header

0

试试这个:

<?php 
    $_URL = "http://www.domainname.com/mediawiki/index.php"; 

    if (! @file_get_contents($_URL)) 
    { 
     echo "Service not responding."; 
    } 
?> 

请注意,您的php.ini必须激活allow_url_fopen

祝您好运

0

另一种选择是查看套接字是否响应。 (我不记得我从哪里得到这个从最初,但它让我知道,如果端口80是响应)。你总是可以将它指向不同的端口。

function server($addr){ 
    if(strstr($addr,'/')){$addr = substr($addr, 0, strpos($addr, '/'));} 
    return $addr; 
};  

$link = 'secure.sdinsite.net:'; 
$s_link = str_replace('::', ':', $link); 
$address = explode (':',"$s_link"); 
$churl = @fsockopen(server($addrress[0]), 80, $errno, $errstr, 20); 

if (!$churl) { 
    $status = 'dead'; 
} else { 
    $status = 'live'; 
}; 

echo $status; 
相关问题