我正在做一个小项目来制作一个 1v1 聊天系统。我想从事一个我可以Server-Sent Events
充分利用的项目。它运行得很好,但最近我一直在对代码进行一些更改,以便总的来说聊天会更有效率。
当我运行事件源时,我遇到了一个奇怪的问题。当我尝试转到具有 session_start() 的任何其他 PHP 页面时,它不会加载。
我的事件源脚本如下所示:
<?php
session_start();
require "connect.php";
require "user.php";
header("Content-Type: text/event-stream\n\n");
header('Cache-Control: no-cache');
set_time_limit(1200);
$ms = 5000;
//SOME MORE VARIABLES HERE
while (1) {
echo "data: SSESSION " . $_SESSION["conversation" . $_GET["id"]];
echo "\n\n";
/*CHAT SCRIPT HERE*/
ob_flush();
flush();
usleep($ms * 1000);
}
?>
会话应该返回的是会话的行数。确实如此。
如果我去test.php
:
<?php
session_start();
echo $_SESSION["conversation121643"];
?>
在Server-Sent Event
运行时,此页面会继续加载,直到我取消事件。
我尝试使用该ob_flush
功能,但这并不能解决任何问题。
我不知道为什么我会遇到这个问题。我希望有一个修复它。