我需要通过PHP下载一个非常大的文件,上次我通过http手动完成它的大小为2.2gb并花了几个小时下载。我想以某种方式自动下载。
以前我用过
file_put_contents($filename, file_get_contents($url));
这样的大文件会好吗?我想在下载后解压文件,然后对tarball中的各种文件进行分析。
答案 0 :(得分:5)
file_get_contents()对于小文件很方便,但它完全不适合大文件。由于它将整个文件加载到内存中,因此每个脚本实例需要2GB的RAM!
你应该使用旧的fopen()+ fread()代替。
此外,不要使用像wget这样的第三方下载工具(在许多Linux系统中默认安装)并创建一个cron任务来运行它。这可能是自动化每日下载的最佳方式。
答案 1 :(得分:0)
您必须调整php.ini以接受上传中的较大文件,并调整内存使用限制。