我正在尝试测试是否在我的页面上存在.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 ......等。
我得到的问题是这个功能似乎导致死亡错误的白页,让我不知道什么是错的。甚至在我的日志文件中都没有。我想真的有两个问题,
提前致谢!
更新:13-3-11 11:03(格林威治标准时间) - 如果.flv流正好在那里页面加载正常,如果.flv流丢失,get_headers会导致白屏死机,即使启用了所有错误报告,也不会在日志中。
答案 0 :(得分:1)
当您致电get_headers($url)
时,它会对提供的网址执行GET查询,然后返回收到的标头。对于普通文档(如页面,图像等),它可以快速执行。
当您请求视频流时,它会尝试接收所有文档,但不能因为超时或类似内容而中断。
尝试使用Curl(由@sexyprout推荐)但使用HEAD请求而不是GET - 它只检索没有响应内容的标头:
curl_setopt($ch, CURLOPT_NOBODY, 1);
答案 1 :(得分:0)
尝试在没有@之前调用此函数 - 你会看到什么是错的。
答案 2 :(得分:0)
也许这种替代方式可行:
$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);