2012-03-03 2 views
0

У меня есть небольшая проблема с моей веб-страницей, которую я обновляю с помощью ajax. Когда я останусь на своей странице какое-то время (час или около того), она перестанет загружаться, и я не могу отобразить ни одну из моих страниц в браузере. Я только начал иметь эту проблему, так как я добавил это (упрощенный) JavaScript на моей странице:Ajax вызов открытия слишком много соединений?

var interval; 

interval = setInterval('UpdateComs()',5000); 


function FuncGo() { 

    $.post('data.php', { profile: pid }, function(data) { 

    $('.holder').html(data); 

    }); 

} 

Поскольку мой сервер не вниз, и это не может быть проблемой, я думал, что это может быть вызвано слишком большим количеством соединений? Может ли вышеуказанное открыть несколько соединений?
И если это так, я должен как-то закрыть их?
Извините за все вопросы, но я не слишком хорошо знаком с тем, как работают подключения. Спасибо за любую помощь или идеи.

ответ

0

Я подозреваю, что случайная ошибка (соединение уходит из-за сетевого трафика, возможно, таймаут), который останавливается setInterval. Всегда передавайте функцию annonomus (а не строку) в setTimeout или setInterval и вызывайте только следующую функцию после завершения предыдущей.

function UpdateComs() { 
$.ajax({ 
    type: "POST", 
    url: 'data.php' 
    data: {profile:pid}, 
    async: true, 
    cache: false, 
    timeout: 10000, 
    success: function(data){ 
    $('.holder').html(data); 
    setTimeout(function(){UpdateComs(); },5000); 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown){ 
    //do what you want with the error 
    setTimeout(function(){UpdateComs(); },5000); 
    } 
}); 
} 
+0

Спасибо, я попытаюсь реализовать это в будущем :) Я спросил у своего веб-хостинга об этом, и они сказали, что это, вероятно, потому, что мой IP-адрес получил доступ к серверу более 2000 раз за 24 часа, что вызвало ip запрет для страницы. Означает ли это, что существует 2000 разных подключений или что он обращается к данным через одно соединение в 2000 раз и что о чем беспокоиться? Если мне платят веб-хостинг, я могу избежать этого ограничения .. Спасибо за ответ :) – user1199434

+0

Обратите внимание, что для отправки следующего запроса вы, вероятно, захотите использовать 'complete()' callback и не повторять вызов 'setTimeout()' в обратных вызовах 'success' и' error'. –

Смежные вопросы