PHP:在中间服务器上即时压缩文件流,而不存储(太多)数据
Posted
技术标签:
【中文标题】PHP:在中间服务器上即时压缩文件流,而不存储(太多)数据【英文标题】:PHP: Zip a file stream on the fly on an intermediate server, without storing (too much) data 【发布时间】:2015-06-24 08:07:51 【问题描述】:相关:
On-the-fly zipping & streaming of large files, in php or otherwise Streaming a large file using PHP我正在寻找其他主题中描述的方法的组合。我可能需要以小块读取文件(从 URL),将它们通过管道传输到 proc_open zip 命令的 STDIN,获取输出并将其刷新到客户端。
我需要做什么:
从存储服务器的 URL 读取文件流 在网络服务器上即时压缩 使用大小未知的 content-disposition 将其作为下载提供到 Web 浏览器(毕竟它是一个流)。我不能做什么:
在网络服务器上存储文件 在存储服务器上运行代码 使用大量内存 让客户端等待下载因此需要在远程块读取仍在进行时开始刷新数据。
这在 PHP 中是否可行?我觉得这在提供更多回调/异步功能的语言中会容易得多,但在这种情况下我被 PHP 卡住了。
欢迎提供任何示例或一些粗略的代码!
【问题讨论】:
【参考方案1】:它不是 PHP,但这个项目完全符合您的要求。您可以将其作为独立服务器托管并从 php 调用它:
https://github.com/scosman/zipstreamer
【讨论】:
以上是关于PHP:在中间服务器上即时压缩文件流,而不存储(太多)数据的主要内容,如果未能解决你的问题,请参考以下文章