当socket操作进行时我们如何写一些数据

时间:2012-09-26 16:05:25

标签: php php-socket

我是套接字的新手,我试图为用户显示一些数据告诉他等待,而套接字是从服务器获取数据,我也使用了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);
}

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

2 个答案:

答案 0 :(得分:0)

尝试将回车符添加到fwrite行的终止处:

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

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

答案 1 :(得分: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. 确定浏览器没有缓冲响应(当Chrome等待响应完成时,FireFox似乎直接输出响应
  5. 其他浏览器在显示之前可能需要接收更多数据,请使用一些空格:

    echo str_repeat(" ",1024)."\n";