1

在家里,我正在尝试创建一个 SSE 端点以在网站上使用,真的。然后,我有保持请求打开的代码片段,显然是(while( true ))......然后,我回显了一些东西,然后在里面使用ob_flush()flush()

但是,在家里它可以正常工作,在远程主机上,没有。

本地主机定义。 System: Linux localhost 3.6.10-2.fc17.x86_64 #1 SMP Tue Dec 11 18:07:34 UTC 2012 x86_64

Server API: Apache 2.0 Handler

setting           local value        master value
output_buffering       0                 0
output_handler     no value           no value

在服务器中......(远程) Linux web521.xxx.net 3.2.2 #1 SMP Wed Feb 1 09:54:51 BRST 2012 x86_64

Server API FPM/FastCGI

setting           local value        master value
output_buffering    no value    no value
output_handler  no value no value

代码片段:

<?php

    while( true ) {
        // ...

        echo '...';
        ob_flush();
        flush();

        usleep( 50000 );

        // ...
    }

?>
4

1 回答 1

0

我遇到了同样的问题,在这里找到了答案:https ://stackoverflow.com/a/12301929/1314762

尝试使用ob_end_flush()除了flush(). 我对为什么没有很好的答案,但是当 ob_flush() 没有时,这对我有用。

举个例子(我借用了porneL关于使用connection_aborted()代替的很好的评论while(true)):

while( !connection_aborted() ) {
    // ...

    echo '...';
    ob_end_flush();
    flush();

    usleep( 50000 );

    // ...
}
于 2013-09-11T00:12:34.403 回答