ik人生如梦场 发布于 2017-05-16 00:43

使用php+js实现服务器推,在wamp环境中可以生效,但转移到Linux下的nginx上,就不能用了,是环境配置问题?要如何配置?
以下是相关代码
服务器端php代码:

date_default_timezone_set("America/New_York");
header("Content-Type:text/event-stream");

$userid = $_SESSION['userid'];
//session_write_close();

$db = get_db();

while(true) {
  $notices = $db->lRange("User:{$userid}:Notice", 0, -1);
  $notice_num = 0;
  foreach ($notices as $value) {
    $readed = $db->hGet("Notice:{$value}:Info", 'readed');
    if ($readed == false) {
      $notice_num++;
    }
  }

  echo "event: ping\n";
    $curDate = $notice_num;
    echo 'data: {"time": "' . $curDate . '"}';
    echo "\n\n";

    ob_flush();
    flush();

    sleep(30);
}

前端js:

var evtSource = new EventSource(serverName + 'index.php/Home/NoticePush/index');    
evtSource.addEventListener("ping", function(e) {     
    var obj = JSON.parse(e.data);     
    $('div#header div#user_notice a').text(obj.time);   
}, false);
1 个回答
  • 因为nginx缓冲区问题,默认nginx是有缓冲区,php的刷新输出对nginx无效的。
    需要输出前面再加个

    header('X-Accel-Buffering: no');
    2017-05-16 23:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
活跃用户
  • 1
    问道摩托
  • 2
    袁广龙976丶
  • 3
    逍遥子
  • 4
    亮仔
  • 5
    芙蓉花
  • 6
    作小die_syj
  • 7
    mobiledu2502875483
  • 8
    王丽珠景平怡伦_621
  • 9
    adfa3sd5f6a
  • 10
    欣欣大妮
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有