我正试图找到一种更好的方式来表达这一点,但我想要的是非常简单(或者至少,我认为应该是这样)。我想从URL下载一个文件(它将是一个大小约10MB的二进制文件),我想将它流式传输到同时请求它的浏览器。据我所知,当你没有设置CURLOPT_RETURNTRANSFER或CURLOPT_FILE时,这只是php和curl的默认行为,并且根据文档,这是因为CURLOPT_FILE设置为STDOUT(页面)。但我想要的是服务器回应来自服务器的任何内容,因为它正在接收并记录输出并将其保存到文件中。后一部分不一定必须在文件仍在下载时发生,但如果可能的话会很好。
有什么想法吗?
答案 0 :(得分:0)
您应该特别查找输出缓冲和ob_flush(),但要小心处理错误!
PHP通常会尝试在向浏览器发送任何内容之前完成所有脚本的执行,但如果您手动覆盖它,则可以在脚本仍在运行时以递增方式将数据发送到浏览器。
另一种方法,如果你不想这样做,就是在已加载的页面中使用分块传输和XMLHttpRequests,并使用某种服务器回调将数据块提供给浏览器。