使用本机PHP函数下载/恢复PHP中的大型文件

使用本机PHP函数下载/恢复PHP中的大型文件,php,curl,fopen,Php,Curl,Fopen,我必须用PHP实现一个简单的文件下载客户端,能够下载大文件并恢复它们 有没有一种方法可以在PHP中下载大文件(>700MB),并且仍然将PHP内存限制为128M?我猜这与写入文件指针有关。关于使用哪些文件处理函数有什么线索吗?有那么多。我猜是fopen,flock,(fwrite,fgets,fread),fclose。还是我应该用卷发 如何恢复已中断的下载?脚本执行超时、用户停止脚本、远程服务器超时等?问题不在于PHP,而在于文件的发送方式。虽然您可以在服务器上使用fopen()和fread(

我必须用PHP实现一个简单的文件下载客户端,能够下载大文件并恢复它们

有没有一种方法可以在PHP中下载大文件(>700MB),并且仍然将PHP内存限制为128M?我猜这与写入文件指针有关。关于使用哪些文件处理函数有什么线索吗?有那么多。我猜是fopen,flock,(fwrite,fgets,fread),fclose。还是我应该用卷发


如何恢复已中断的下载?脚本执行超时、用户停止脚本、远程服务器超时等?

问题不在于PHP,而在于文件的发送方式。虽然您可以在服务器上使用
fopen()
fread()
等,但如何在客户端使用
fopen()
fwrite()
呢?标准Javascript无法从浏览器中打开文件,您必须依赖其他方法,例如(gulp)或Flash组件(??)


然而,由于HTML5还没有被主流浏览器完全采用。

这应该可以通过设置
CURLOPT_文件
CURLOPT_RESUME_来实现。我不确定cURL是否会覆盖文件或附加到文件中,也不确定它是否会将文件缓冲到内存中或直接写入磁盘。你可能需要在那里做一些测试


如果您希望对整个过程有更多的控制,可以使用正常的
fread
fwrite
功能,创建与正在下载的服务器的原始连接,并通过此连接进行写入和读取。您必须向连接发送(
fwrite
)正确的HTTP头以启动传输,最重要的是恢复传输,然后使用
fread
读取几个字节,然后将它们写入一个文件并重复,直到传输完成。

听起来更像是OP想要使用PHP脚本从另一台服务器下载文件。不涉及客户端或Javascript。@deceze,你怎么会这么想?没有任何东西暗示这样的结论“用PHP实现简单的文件下载客户端,能够下载大文件”——PHP下载文件,而不是服务