0

我有一个简单的 php 脚本来使用 file_get_contents() 对我的一些域执行 ping 操作,但是我检查了我的日志并且它们没有记录任何获取请求。

我有

$result = file_get_contents($url);
echo $url. ' pinged ok\n';

其中每个域的 $url 只是http://mydomain.com/形式的简单字符串,echo 验证了这一点。我自己提出的手动请求正在显示。

为什么我的日志中不会显示获取请求?

实际上,当我将 $result 发送到浏览器时,我已经注册了命中。我猜这意味着网络服务器只记录浏览器请求?有什么方法可以在php中模仿吗?

好的尝试了curl php:

// create curl resource
$ch = curl_init();

// set url
curl_setopt($ch, CURLOPT_URL, "getcorporate.co.nr");

//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// $output contains the output string
$output = curl_exec($ch);

// close curl resource to free up system resources
curl_close($ch);   

虽然效果相同 - 日志中没有记录命中。到目前为止,它仅在我将脚本中的 http 响应反馈给浏览器时才注册。显然,这仅适用于单个请求,而不适用于我脚本的目的。

如果出现其他问题,我可以查看哪些调试输出?

编辑:哦!请参阅以下已接受答案的评论,以解释我的错误想法。

4

3 回答 3

2

如果请求实际上正在发出,它将在日志中。

您的示例代码可能会静默失败。

如果你这样做会发生什么:

<?PHP
if ($result = file_get_contents($url)){
    echo "Success"; 
}else{
    echo "Epic Fail!";
}

如果这失败了,您将需要打开一些错误报告或日志记录并尝试找出原因。

注意:如果您处于安全模式,或者禁用了 fopen url wrappers,则 file_get_contents() 将不会抓取远程页面。这是事情失败的最可能原因(假设 $url 的内容没有错字)。

于 2009-11-01T19:57:24.490 回答
0

使用 curl 代替?

于 2009-11-01T19:41:06.910 回答
0

这很奇怪。也许有一些缓存正在进行中?您是否尝试过动态更改 URL(例如 $url = $url."?timestamp=".time())?

于 2009-11-01T19:48:48.750 回答