Я не понимаю почему, но цикл в моем 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, поэтому мой браузер не должен зависать ...