2
我正在開發一個用於製作1v1聊天系統的小項目。我想在一個項目上工作,我可以很好地使用Server-Sent Events
。它工作得很好,但最近我一直在對代碼進行一些更改,以便通常聊天會更有效率。當服務器發送的事件正在運行時,不會加載帶有session_start()的頁面
當我運行事件源時遇到了一個奇怪的問題。當我嘗試去其他具有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
函數,但是這並沒有解決任何問題。
我不知道爲什麼我有這個問題。我希望有一個解決辦法。
嘗試刪除標題('Cache-Control:no-cache'); –
@ EtienneLepage-Lepitre這似乎不能解決問題。 – Shawn31313
當我從事件源腳本中提取:'session_start();'時它有效。但我需要它。 – Shawn31313