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

Я не понимаю почему, но цикл в моем PHP-файле, запрошенный моим ajax-кодом, заставляет мой браузер зависать при загрузке страницы

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'); // when something is inserted into my db, the file contains a false value

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

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

JS код:

    checkForUpdates: function ()
    {
      var that = this;

      $.ajax({
        url: 'updates.php',
        type: 'GET',
        dataType: 'json',
        timeout: 10000,
      }).done(function (data)
      {
        console.log('Went OK');
        if (data.updates)
        {
          alert('there is new!');
          setTimeout(function () { that.checkForUpdates() }, 5000);
        }
      }).fail(function (data)
      {
        console.log(data);
        setTimeout(function () { that.checkForUpdates() }, 10000);
      });
    }

Вы знаете, где это идет не так?Это странно, потому что параметр ajax async по умолчанию имеет значение true, поэтому мой браузер не должен зависать ...

...