【问题标题】:Return value to browser but still process in PHP将值返回给浏览器,但仍在 PHP 中处理
【发布时间】:2010-01-31 08:10:00
【问题描述】:

我正在使用 flash 调用需要进行一些处理的 PHP 页面。是否可以让 PHP 继续处理但无论如何显示响应以便 flash 不会停止等待?

【问题讨论】:

    标签: php process request


    【解决方案1】:

    我的回答来自here

    您可以发送 Connection:Close 标头, 为您的用户完成页面, 但可以让你执行一些事情 “页面加载后”。

    有一种简单的方法可以忽略用户 中止(也参见php manual):

    ignore_user_abort(true);
    

    【讨论】:

      【解决方案2】:

      使用输出控制又名输出缓冲来做到这一点。 http://www.php.net/manual/en/function.ob-flush.php

      【讨论】:

        【解决方案3】:

        你可以试试flush()

        举个例子,试试这两条不同的代码:

        // without flush()
        foreach ( range(1, 5) as $num ) {
            echo "Beep $num<br>";
            sleep(1);
        }
        
        // with flush()
        foreach ( range(1, 5) as $num ) {
            echo "Beep $num<br>";
            flush();
            sleep(1);
        }
        

        【讨论】:

          【解决方案4】:

          如果您不需要等待处理结束以输出内容(即,如果您不需要输出与您希望的处理结果相关的任何内容,则可以在 register_shutdown_function 中的已注册函数内关闭连接做)。

          见:http://www.php.net/manual/en/features.connection-handling.php#93441

          之所以把它放在 register_shutdown_function 中是因为即使客户端中止连接,处理也会一直持续到最后。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-13
            • 2011-03-13
            • 1970-01-01
            相关资源
            最近更新 更多