1

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

我想做的是

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

我对 php 很陌生,所以我什至不确定我在寻找什么功能。

谢谢

4

4 回答 4

5

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

由于您只想查看页面是否“启动”,因此您不需要请求整个页面,您可以使用 HEAD 请求来获取页面的标题。

于 2010-10-20T18:02:48.930 回答
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

确保allow_url_fopen = On在您的 php.ini

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

于 2010-10-20T18:03:24.360 回答
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;
于 2010-10-20T19:19:34.113 回答
0

尝试这个:

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

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

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

祝你好运

于 2010-10-20T18:05:08.920 回答