php - PHP 中的 “Transfer-Encoding: chunked” header 。 "padding"是做什么用的?

标签 php padding transfer-encoding

正如对上一个问题(PHP External Oauth : how to displaying a waiting message while waiting for callback (not using AJAX))的回复中所建议的,我正在使用传输编码:分块来在执行某些任务时显示等待消息。我的第一次尝试失败了,我在这个问题“Transfer-Encoding: chunked” header in PHP中找到了解决方案。有 1024 个空格的“填充”。如果没有这个填充,它就不起作用。我用谷歌搜索了一下,但找不到这个填充的用途。这是示例代码(来自相关问题)。

<?php
        header('Content-Encoding', 'chunked');
        header('Transfer-Encoding', 'chunked');
        header('Content-Type', 'text/html');
        header('Connection', 'keep-alive');

        ob_flush();
        flush();

        $p = "";  //padding
        for ($i=0; $i < 1024; $i++) { 
            $p .= " ";
        };
        echo $p;

        ob_flush();
        flush();

        for ($i = 0; $i < 10000; $i++) {
            echo "string";
            ob_flush();
            flush();
            sleep(2);
        }

?>

有人能解释一下为什么它在没有“填充”的情况下可以工作吗?

最佳答案

据我了解,填充用于填充服务器缓冲区。

如果没有它,服务器将等到 PHP 填充它,然后刷新它 - 即使在 PHP 代码中你这样做 flush() .

相关:

关于php - PHP 中的 “Transfer-Encoding: chunked” header 。 "padding"是做什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13565952/

相关文章:

php - PHP/MySQL 中的任务队列 : Race Condition

php - Twitter API - 获取帐户的转推计数

php - 将多个站点合并为一个

javascript - 如何使用 styled-components 将 Gatsby 链接组件的填充设置为 0px

SwiftUI - 填充修饰符上的三元运算符会使程序崩溃

android - 滚动时的 ListView 填充

Varnish 返回(获取/交付)与分块编码

PHP UTF-8 转 Windows 命令行编码

.NET WCF 无法解码 "Chunked"响应

tomcat - (spring-boot, cxf, tomcat) 内容长度与传输编码 : chunked?