PHP - длинный опрос, сессия уничтожается - PullRequest
0 голосов
/ 11 декабря 2018

Я впервые пытаюсь использовать длинные опросы, чтобы обновлять список сообщений моих пользователей в режиме реального времени, веб-сокеты кажутся мне слишком сложными.На данный момент мое приложение работает локально.

Вот код PHP, он еще не завершен, я пока что только делаю тесты:

    ini_set('max_execution_time', 0);
    ignore_user_abort(false);

    $isUptodate = (bool) file_get_contents($this->uptodateFile);

    while ($isUptodate === true)
    {
      sleep(1);
      $isUptodate = (bool) file_get_contents($this->uptodateFile);
    }

    $updateUptodateFile = fopen($this->uptodateFile, 'w');
    fwrite($updateUptodateFile, 'true');

    $jsonData = json_decode(file_get_contents($this->updateFile), true);

    echo json_encode(['updates' => count($jsonData)]);

А вот код JS (опять же, это попытки, задержки setTimeout будут изменены позже, когда код будет работать нормально):

    checkForUpdates: function ()
    {
      var that = this;

      $.ajax({
        url: 'updates.php',
        type: 'GET',
        dataType: 'json',
        timeout: 10000
      }).done(function (data)
      {
        console.log('data received');
        if (data.updates)
        {
          alert('nouveau message');
          setTimeout(function () { that.checkForUpdates() }, 5000);
        }
      }).fail(function (data)
      {
        console.log(data);
        setTimeout(function () { that.checkForUpdates() }, 10000);
      });
    }

Итак, первое странное, что, если я установлю async: true, cache: false в параметрах ajax, код не будет правильно загружать мой файл updates.php.

Вторая странная вещь для меня - это то, что если мой цикл выполняется в течение определенного времени, мой сеанс разрушается.

Почему?По поводу длинного опроса, я правильно делаю?

...