PHP :如何通过 curl 发布 3 GB 字符长字符串或在浏览器中输出


PHP : how to post a 3 gigabyte chars long string by curl or output it in browser?

我正在做一个在线数据库转储工具。

但是当我输出数据时,PHP 会等到它可以计算出需要转储的长度,这可能会让用户对 API 是否正常工作感到困惑。

如何分块发送响应?

我尝试添加:

header('Transfer-Encoding:chunked');

但是Chrome浏览器无法打开带有它的页面。

我需要做什么?

谢谢!


答:发送前应先对数据进行编码。

function chunk_encoding($chunk) {
    printf("%x'r'n%s'r'n", strlen($chunk), $chunk);
    flush();
    ob_flush();
}

3GB的数据淹没用户并不是最聪明的方法。假设这个用户有DSL连接(假设6MBit),他必须等待可怕的~69分钟,直到所有数据都可以使用(例如复制)。此外,不允许他关闭加载此数据的选项卡,否则数据将丢失。最后,如果任何浏览器被迫显示如此多的数据,他都会成长为消耗内存的怪物。

更好的解决方案是在服务器上生成一个文件,并通过向用户显示链接来让用户下载此文件。这样,用户可以在后台下载文件(可以使用任何下载管理器),并可以在本地检索数据。