测试网页是否通过php响应

时间:2010-10-20 17:59:50

标签: php url webpage ping

我正在尝试使用php构建一个基本的“状态”页面,它将告诉我的用户各种服务(我们使用的网页)是否至少提供页面服务(这不是100%保证工作,但它非常好指示器)

我想做的是像

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

我对php很新,所以我甚至不确定我正在寻找什么功能。

由于

4 个答案:

答案 0 :(得分:5)

有很多方法可以使用内置的PHP函数来执行此操作(例如file_get_contents),但它们并不是很好。我建议你看看优秀的cURL库。这可能会指向正确的方向:Header only retrieval in php via curl

由于您只想查看某个页面是否“up”,您不需要请求整个页面,您只需使用HEAD请求即可获取该页面的标题。

答案 1 :(得分: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

答案 2 :(得分:0)

试试这个:

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

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

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

祝你好运

答案 3 :(得分: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;