打印前检查file_get_contents退货



所以我处于一个无法使用curl的环境中,所以经过一些研究,我发现我可以在stream_context_create上下文中使用file_get_contents

它工作得很好,但是我注意到如果请求失败file_get_contents返回 false,我想打印一个指示错误的 JSON 对象而不是普通false

这是我的代码片段:

$postdata = http_build_query(
    $_POST
);
$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);
$context = stream_context_create($opts);
echo file_get_contents($urlAtividade, false, $context);

我用它来从另一个网络服务获取数据。我在这里担心的是某些请求的输出非常大,所以我想知道检查这一点的最佳方法是什么。

我想知道如果我将返回保存在变量中,file_get_contents返回会在内存中加倍吗?因为我在这里最关心的是产生开销或内存不足。

$return = file_get_contents($urlAtividade, false, $context);
if($return === FALSE){
    $response["error"] = TRUE;
    $response["error_msg"] = "Request Failed";
    echo json_encode($response);
}
else {
    echo $return;
}

我想知道是否有办法打印结果并在 if 语句中返回 false?

我认为你不需要担心这个。

为变量赋值不会复制它,它只是创建对同一内存的引用。仅当您修改其中一个副本时,才会创建副本。

如果要避免将内容复制到内存中,则必须使用 readfile() 而不是 file_get_contents() 。这会将内容直接复制到 PHP 输出缓冲区中,该缓冲区在填满时会定期刷新(除非您已打开输出缓冲以便可以捕获它(。但是,如果这样做,则无法先检查值。

相关内容

  • 没有找到相关文章

最新更新