0

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

但是当我输出数据时,PHP 会一直等到它可以计算出它需要转储的长度,这可能会使用户混淆 API 是否正常工作。

如何分块发送响应?

我尝试添加:

header('Transfer-Encoding:chunked');

但是Chrome浏览器无法用它打开页面。

我需要做什么?

谢谢!


答:应该在发送之前对数据进行编码。

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

1 回答 1

3

向用户充斥 3GB 数据并不是明智之举。假设这个用户有 DSL 连接(比如说 6MBit),他必须等待可怕的大约 69 分钟,直到所有数据都可以使用(例如复制)。此外,不允许他关闭加载此数据的选项卡,否则数据将丢失。最后,如果被迫显示这么多数据,任何浏览器都会变成一个消耗内存的怪物。

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

于 2012-06-28T09:37:56.553 回答