Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP get_头导致白色死亡屏幕_Php_Video Streaming_Get Headers - Fatal编程技术网

PHP get_头导致白色死亡屏幕

PHP get_头导致白色死亡屏幕,php,video-streaming,get-headers,Php,Video Streaming,Get Headers,在决定是否显示flowplayer之前,我正在测试页面上是否存在.flv视频流。我想我应该检查一下文件头,看看是否找到了它(我不知道这是否真的有效)…使用以下函数: function StreamRunning(){ $file_headers = @get_headers('http://12.34.56.789:1234/stream.flv'); if($file_headers[0] == 'HTTP/1.1 404 Not Found') { // HTTP/1.

在决定是否显示flowplayer之前,我正在测试页面上是否存在.flv视频流。我想我应该检查一下文件头,看看是否找到了它(我不知道这是否真的有效)…使用以下函数:

function StreamRunning(){

    $file_headers = @get_headers('http://12.34.56.789:1234/stream.flv');
    if($file_headers[0] == 'HTTP/1.1 404 Not Found') {   // HTTP/1.1 200 OK
        return false;
    }
    else {
        return true;
    }

}
为了测试我在流的URL中硬编码的东西。实际上,这将是我的计算机的公共IP地址,从VLC播放器流式传输视频,但对于这个演示,我已经用12.34…等替换了它

我遇到的问题是,这个函数似乎导致了一个白色的死亡错误页面,不给我任何错误的线索。我的日志文件里什么都没有。我想有两个问题真的

  • 我的功能有问题吗?get_标头不接受I/P地址吗 像那样
  • 有没有更好的方法让我这样做呢
  • 提前谢谢

    更新:13-3-11 11:03(格林尼治时间)-
    如果.flv流实际在那里,则页面加载正常,如果.flv流缺少get_标头,则会导致死亡的白色屏幕,即使启用了所有错误报告,日志中也没有任何内容。

    尝试在没有@的情况下调用此函数,您将看到问题所在。

    也许这种替代方法可以工作:

    $ch = curl_init('http://12.34.56.789:1234/stream.flv');
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $c = curl_exec($ch);
    
    echo curl_getinfo($ch, CURLINFO_HTTP_CODE);
    

    当您调用
    get\u headers($url)
    时,它会对提供的url执行get查询,然后返回收到的头。对于普通文档(如页面、图像等),它执行速度很快。 当您请求视频流时,它试图接收所有文档,但无法接收,因为它被超时或类似的情况中断

    尝试使用Curl(按照@sexyprout的建议),但使用headrequest而不是GET-它只检索没有响应内容的头:

    curl_setopt($ch, CURLOPT_NOBODY, 1);
    

    第一步必须始终删除
    @
    错误抑制运算符。第二步是启用错误报告:例如
    错误报告(e_ALL)
    应该会给您一条有意义的错误消息来处理。我添加了您建议的内容,但它仍然会导致一个空白的白屏错误。如果我将get_headers行中的URL替换为其他内容(例如),它就可以正常工作。我在error_reporting ok中添加了def,因为它显示了以前从未定义过的$GET变量。好吧,有趣的是,如果我启用视频流,页面加载良好,问题是如果流不存在,GET_头会导致白屏死亡@Dan这通常是错误报告应该起作用的地方,这就是为什么我说这很奇怪。嗨,对不起,我应该补充一点,我试过删除@,但没有什么不同。这肯定是因为我替换了$file_headers=@get_headers(');使用$file_headers=get_headers(');而且效果很好。我试过了,它也能做同样的事情……嗯,我什么也没得到。如果我将实际路径更改为“”,我会得到响应!啊,听起来不错。我试图修改@sexyprout的示例,但仍然返回空白。为了确认,我将示例中的第二行替换为上面的行?我不知道如何将代码放入响应中!我要试一试<代码>$ch=curl\u init('http://12.34.56.789:1234/stream.flv'); curl_setopt($ch,CURLOPT_NOBODY,1)$c=旋度执行($ch);echo curl_getinfo($ch,CURLINFO_HTTP_代码)好吧,我试着加入你建议的内容,但它仍然给了我死亡的白色屏幕<代码>$ch=curl\u init('http://12.34.56.789:1234/Secret.flv'); curl_setopt($ch,CURLOPT_头,1);curl_setopt($ch,CURLOPT_NOBODY,1)$c=旋度执行($ch);echo curl_getinfo($ch,CURLINFO_HTTP_代码)还有其他想法吗?