是php file_get_contents()足以下载电影吗?

时间:2010-01-08 03:58:21

标签: php

是file_get_contents()足以下载位于服务器上的远程电影文件吗?

我只是认为将大型电影文件存储到字符串中是有害的吗?根据php文档。

或者我需要使用cURL吗?我不知道cURL。

更新:这些是大型电影文件。每个约200MB。

4 个答案:

答案 0 :(得分:3)

file_get_contents()是个问题,因为它会一次性将整个文件加载到内存中。如果你有足够的内存来支持操作(考虑到如果这是一个Web服务器,你可能有多个同时产生这种行为的命中,因此每个需要那么多的内存),那么file_get_contents()应该没问题。但是,它不是正确的方式 - 您应该使用专门用于这些操作的库。正如其他人所提到的,cURL会做到这一点,或者wget。您也可以使用fopen('http://someurl', 'r')并从文件中读取块然后将它们直接转储到已为打开权限而打开的本地文件中运气好。

答案 1 :(得分:2)

正如@mopoke建议的那样,它可能取决于文件的大小。对于一部小电影来说,它就足够了。总的来说,我认为cURL会更合适。与file_get_contents()相比,它具有更大的灵活性。

答案 2 :(得分:1)

为了获得最佳性能,您可能会发现仅使用WGET等标准unix实用程序是有意义的。您应该可以使用system(“wget ...”)或exec()调用它 http://www.php.net/manual/en/function.system.php

答案 3 :(得分:0)

你可以使用fread()一次读取几个字节。

$src="http://somewhere/test.avi";
$dst="test.avi";
$f = fopen($src, 'rb');
$o = fopen($dst, 'wb');
while (!feof($f)) {
     if (fwrite($o, fread($f, 2048)) === FALSE) {
        return 1;
     }
}
fclose($f);
fclose($o);