PHP与comet / ajax和ob_flush

时间:2014-12-16 11:30:20

标签: javascript php typo3 comet

我正在尝试使用TYPO3控制器中的ob_flush()flush(),但结果很奇怪。在Web浏览器控制台中,我可以看到每次刷新都不会导致Javascript中的一个响应;服务器上的刷新和javascript中的反应之间没有一对一的对应关系。这是代码:

// PHP
foreach ($ids as $id) {
  echo $id;
  ob_flush(); // <-- Flush 1, 2, 3, ...
  flush();
  // more data processing...
}

// Javascript
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
  }
  else if (xhr.readyState > 2) {
    console.log(xhr.responseText); // <-- Can log "123" in one go
  }
}

如何强制一个flush在Javascript中引出一个响应?

是否经常发生刷新,以至于Apache2没有时间做出反应?

修改:在echo

之后加入此解决方案
echo str_pad('',4096)."\n";    

0 个答案:

没有答案