php 下载大文件并保存在服务器

如题。
不能使用 set_time_limit(0),因为线上项目不会让你无限期的执行

我现在能想到的只有使用curl

curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch ,$str){});

每次读取一小部分然后写入文件。

不知道还有没有更好的办法,希望各位大神指点。

阅读 3k
2 个回答

线上项目可以设置页面超时,从而可以无限运行

采用断点续传即可。

前提条件是服务端支持断点续传。这个只要看服务端返回的应答头中,是否包含以下header:
Accept-Ranges: bytes

只要有这个header,就说明对方支持断点续传。

这样每次请求时,可以在请求头中增加以下header,以指定读取的数据范围:

Range: bytes=1024-2047 请求从第1024个字节到第2047个字节之间的数据

Range: bytes=2048- 请求从第2048个字节到最后一个字节的内容

诸如此类…

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题