Php 打印前检查文件\u获取\u内容返回

Php 打印前检查文件\u获取\u内容返回,php,mysql,json,web-services,php-7,Php,Mysql,Json,Web Services,Php 7,因此,我所处的环境无法使用curl,因此经过一些研究,我发现我可以使用file\u获取内容,并创建stream\u上下文 它工作得很好,但是我注意到如果请求失败,file\u get\u contents返回false,我想打印一个指示错误的JSON对象,而不是简单的false 以下是我的代码片段: $postdata = http_build_query( $_POST ); $opts = array('http' => array( 'method'

因此,我所处的环境无法使用
curl
,因此经过一些研究,我发现我可以使用
file\u获取内容
,并创建
stream\u上下文

它工作得很好,但是我注意到如果请求失败,
file\u get\u 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);
我使用它从另一个Web服务获取数据。我关心的是有些请求的输出非常大,所以我想知道什么是检查这个的最好方法

我想知道如果我将返回值保存在一个变量中,
file\u get\u contents
return是否会在内存中加倍?因为我最担心的是造成开销或内存不足

$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\u get\u contents()
。这会将内容直接复制到PHP输出缓冲区中,该缓冲区在满时会定期刷新(除非您打开了输出缓冲以便捕获它)。但如果这样做,则无法首先检查值。

如果创建函数,则可以返回true false和echo/print\r result。我真的不需要脚本上的内容,我只需要将其刷新到客户端。因此,使用
readfile()
将非常适合我的需要,因为如果我得到FALSE,那么我可以打印错误JSON对象。谢谢