2

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が、何も修正されません。

なぜこの問題が発生するのかわかりません。そして、それに対する修正があることを願っています。

4

1 に答える 1