javascript - Ob_end_flush 不断产生错误

标签 javascript php buffer server-sent-events

我目前正在处理服务器发送的事件,但遇到了一个奇怪的问题。随着事件的进行,每次迭代我都会收到以下错误:

ob_end_flush(): failed to delete and flush buffer. No buffer to delete or flush in

我的服务器事件服务器端代码如下:

<?php

  require "connect.php";

  session_write_close();

  header("Content-Type: text/event-stream\n\n");

  $savedcount = 0; 
  while (1) {

    // Who's mechanism 
    $query = $mysqli->query("SOME QUERY"); 
    $rowcount = $query->num_rows;

    if ($savedcount != $rowcount) {
       // echo stuff
       $savedcount = $rowcount; // only echo stuff if there is new content
    }

    ob_end_flush();
    flush();
    sleep(2);
  }

?>

我不完全理解缓冲区。此外,在您认为这是糟糕的做法之前,请知道服务器发送的事件是特殊的。这是他们在 MDN 上显示的类似脚本.出于这个原因,我不确定为什么我不断收到这些错误。

建议?

最佳答案

在 PHP 中,输出缓冲区保存将打印到页面的实际内容 - 基本上是回显或打印的任何内容。所以在你什么都不回显的情况下,缓冲区将是空的,当你尝试用 ob_end_flush 发送任何东西时你会得到一个错误。您可以添加一个检查来避免此错误:

if (ob_get_length() > 0) {
    ob_end_flush();
    flush();
}

sleep(2);

关于javascript - Ob_end_flush 不断产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36706878/

相关文章:

javascript - jQuery如何抓取元素?

javascript - jQuery 动画无法正确滚动

node.js - MongoDB 仅使用中间件插入 UUID?

c++ - 如何将写入缓冲区添加到io.h中定义的写入中

OpenGL 缓冲区、glFlush 和 glutSwapBuffers()

Javascript:IE8 中变量对象属性问题的参数无效

javascript - 无法在 Phaser 2.3.0 中添加图像

javascript - 如果正在输入输入文本'空隐藏标签,按下按钮时显示标签

php - 类似 mysql 的查询带来其他字母表结果

c# - PHP 控制 C# 应用程序的 MySQL 数据库