我试图使用PHP来建立一个基本的“状态”页面,它会告诉我的用户各种服务(我们使用的网页)是否至少提供页面(这不是100%工作,但其相当不错的指标)的担保测试网页是否通过php进行响应
什么,我想要做的是一样的东西
www.domainname.com/mediawiki/index.php并确保返回的页面或不
我很新的PHP所以即时通讯甚至不知道我在找什么功能。
感谢
我试图使用PHP来建立一个基本的“状态”页面,它会告诉我的用户各种服务(我们使用的网页)是否至少提供页面(这不是100%工作,但其相当不错的指标)的担保测试网页是否通过php进行响应
什么,我想要做的是一样的东西
www.domainname.com/mediawiki/index.php并确保返回的页面或不
我很新的PHP所以即时通讯甚至不知道我在找什么功能。
感谢
有办法使用内置的PHP函数来做到这一点(例如的file_get_contents),但他们都不是很好。我建议你看看优秀的cURL库。这可能会指向正确的方向:Header only retrieval in php via curl
既然你只是想看看一个页面是“up”,你不需要请求整个页面,你可以使用HEAD请求获取标题为这一页。
为什么'file_get_contents'不适合这个目的? – webbiedave 2010-10-20 18:11:04
file_get_contents在许多共享主机系统上处于禁用状态,并且返回的数据超过您确定页面是否可用的情况。 – 2010-10-20 18:12:01
确实如此,但你会惊奇地发现有多少脚本被写入头部(被误导)。另外,您可以设置file_get_contents来执行HEAD请求。无论哪种方式,我建议搜索返回的来源为一个特定的字符串更好的决心。 – webbiedave 2010-10-20 18:14:41
它将返回网页源为一个字符串。通过这种方式,您甚至可以搜索字符串以获取特定值(如果需要),以获得更精细的结果。 这可以是非常有用的情况下内容仍然返回,但是某种错误消息。
$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
试试这个:
<?php
$_URL = "http://www.domainname.com/mediawiki/index.php";
if (! @file_get_contents($_URL))
{
echo "Service not responding.";
}
?>
请注意,您的php.ini
必须激活allow_url_fopen
祝您好运
另一种选择是查看套接字是否响应。 (我不记得我从哪里得到这个从最初,但它让我知道,如果端口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;
不要忘记你采取的任何解决方案,你可以“玩”超时。例如,file_get_contents可以直接在第三个参数中设置函数超时。请参阅:http://php.net/manual/fr/function.file-get-contents.php – Cybrix 2010-10-20 18:25:50