2

我是套接字的新手,我试图显示一些数据让用户告诉他等待,当套接字从服务器获取数据时,我也使用了 ob_flush、flush 和其他一些函数,但它们没有用,文本“正在加载....请稍候”仅在套接字关闭后出现,这是我的代码

$fp = fsockopen("tcp:.......", port num, $errno, $errstr);
if (!$fp) 
{
    echo "ERROR: $errno - $errstr<br />\n";
} 
else 
{
    echo "Loading .... Please Wait";
    flush();
    fwrite($fp, $num . "\n");
    ini_set('max_execution_time', 600);
    $cmd_res = fread($fp, 1000);
    echo $cmd_res;
    fclose($fp);
}

如果您有任何解决方案,请帮助我。提前致谢

4

2 回答 2

0

使其工作的一些建议:

  1. 确保在 php.ini 中关闭了输出缓冲:

    output_buffering = Off
    zlib.output_compression = Off
    
  2. 结束任何活动的输出缓冲缓冲区处于活动状态:

    while(ob_get_level()){ 
        ob_end_clean(); 
    }
    
  3. 禁用任何可以缓冲响应的http服务器模块(即:apache中的mod_gzip)

  4. 确保浏览器没有缓冲响应(FireFox 似乎直接输出响应,而 chrome 等待响应完成
  5. 其他浏览器可能需要接收更多数据才能显示,利用一些空格:

    echo str_repeat(" ",1024)."\n";
    
于 2012-09-26T22:57:48.337 回答
0

尝试在 fwrite 行的末尾添加回车:

fwrite($fp, $num . "\r\n");

套接字将采用这种组合的新行。

于 2012-09-26T16:22:12.763 回答