使用PHP为web flash视频播放器提供大型mp4文件

使用PHP为web flash视频播放器提供大型mp4文件,php,Php,我在任何地方都找不到任何解决办法 我有一个为flash player输出mp4文件的文件,如下所示: ^^/stream/ntpxrmmmgjjd47423 我对这个/流有一个代码,如下所示: ^^^ $file = str_replace('/','\\',DOC_ROOT_STREAM."/".$path); header('Last-Modified: Thu, 23 Sep 2010 02:00:02 GMT'); header('Content-Length: ' . filesiz

我在任何地方都找不到任何解决办法

我有一个为flash player输出mp4文件的文件,如下所示:

^^/stream/ntpxrmmmgjjd47423

我对这个/流有一个代码,如下所示:

^^^
$file = str_replace('/','\\',DOC_ROOT_STREAM."/".$path);

header('Last-Modified: Thu, 23 Sep 2010 02:00:02 GMT');
header('Content-Length: ' . filesize($file));
header('Connection: close');
header('Content-Type: video/mp4');

readfile($file);
exit;
这适用于小文件,但不适用于大文件

我检查过了,URL是正确的

我尝试更改
内存限制
时间限制
,但没有帮助

另外,我不能使用诸如
xsendfile
等Apache模块

我需要一个
readfile()
的解决方案,这样它就不会开始在内存中加载文件,然后将其发送到闪存再次读取,然后开始流式处理。

尝试以下操作:

$handle = fopen($file, "rb");
while (!feof($handle)) {
  echo fread($handle, 32 * 1024);
}
fclose($handle);
readfile()
将尝试将文件的全部内容加载到内存中。您可以使用
fread()
一次读取一小块内容。

试试以下方法:

$handle = fopen($file, "rb");
while (!feof($handle)) {
  echo fread($handle, 32 * 1024);
}
fclose($handle);

readfile()
将尝试将文件的全部内容加载到内存中。您可以使用
fread()
一次读取一小块内容。

另一个可能会导致PHP提供的大文件出现问题的原因是浏览器往往只下载文件的一部分,然后再返回,以避免在不需要时一次下载所有内容,看一看-这将让您的php应用程序处理这些请求

另一个可能会导致php提供的大文件出现问题的原因是浏览器往往只下载文件的一部分,然后稍后再返回,以避免在不需要时一次下载所有内容,看看-这将让您的php应用程序处理这些请求