1

我正在尝试找到一种更好的表达方式,但我想要的非常简单(或者至少,我认为应该如此)。我想从 URL 下载一个文件(它将是一个大小约为 10MB 的二进制文件),并且我想将它流式传输到同时请求它的浏览器。据我所知,当您没有设置 CURLOPT_RETURNTRANSFER 或 CURLOPT_FILE 时,这只是 php 和 curl 的默认行为,根据文档,这是因为 CURLOPT_FILE 设置为 STDOUT(页面)。但我想要的是服务器在接收到服务器时回显来自服务器的任何内容,并记录输出并将其保存到文件中。后一部分不一定要在文件仍在下载时发生,但如果可能的话,那就太好了。

有任何想法吗?

4

1 回答 1

0

您应该特别查找输出缓冲和ob_flush(),但要非常小心处理错误!

PHP 通常会在向浏览器发送任何内容之前尝试完成所有脚本的执行,但如果您手动覆盖它,您可以在脚本仍在运行时逐步向浏览器发送数据。

如果您不想这样做,另一种方法是在已加载的页面中使用分块传输和 XMLHttpRequests,并使用某种服务器回调将数据块提供给浏览器。

于 2012-05-29T00:50:02.300 回答