我正在做一个在线数据库转储工具。
但是当我输出数据时,PHP 会等到它可以计算出需要转储的长度,这可能会让用户对 API 是否正常工作感到困惑。
如何分块发送响应?
我尝试添加:
header('Transfer-Encoding:chunked');
但是Chrome浏览器无法打开带有它的页面。
我需要做什么?
谢谢!
答:发送前应先对数据进行编码。
function chunk_encoding($chunk) {
printf("%xrn%srn", strlen($chunk), $chunk);
flush();
ob_flush();
}
3GB的数据淹没用户并不是最聪明的方法。假设这个用户有DSL连接(假设6MBit),他必须等待可怕的~69分钟,直到所有数据都可以使用(例如复制)。此外,不允许他关闭加载此数据的选项卡,否则数据将丢失。最后,如果任何浏览器被迫显示如此多的数据,他都会成长为消耗内存的怪物。
更好的解决方案是在服务器上生成一个文件,并通过向用户显示链接来让用户下载此文件。这样,用户可以在后台下载文件(可以使用任何下载管理器),并可以在本地检索数据。