Robię długi chat room z metodą ankiety. Wydaje się jednak, że po długiej ankiecie odświeżam stronę w chrome LUB próbuję wysłać inne żądanie asynchroniczne, gdy przekroczono limit czasu (tzn. Nie mogę załadować mojej domeny ponownie, dopóki nie zamknę/ponownie otworzę przeglądarki).Wydłużenie limitu czasu odpytywania
Moja klient kod stronie jest:
$(document).ready(function() {
setTimeout(
function() {
longPollForMessages();
},
500
);
});
function longPollForMessages()
{
$.ajax({
url: url,
dataType: 'json',
success: function(data) {
$('#chat_messages').append('<div>'+data.messages+'</div>');
longPollForMessages();
}
});
}
A moja ServerSide:
while(true) {
$messages = $db->getMessages();
if (!$messages || sizeof($messages)==0) {
sleep(1);
} else {
echo '{"message":'.json_encode($messages).'}';
die();
}
}
Jakieś pomysły? Nie przyjmuj błędów składniowych.
Spróbuj wstawić 'break;' po 'echo' w kodzie servera –
Dziękuję za odpowiedź:) Tak naprawdę miałem to, ale zapomniałem podać w moim kodzie pytającym. Więc to nie jest problem. –
Faceci, zrozumiałem to z tego pytania: http://stackoverflow.com/questions/4457178/long-polling-locking-up-other-ajax-calls - php blokuje daną sesję, dopóki strona nie zostanie załadowana, więc drugie wywołanie ajax nie mogło przejść. Musisz zwolnić blokadę, wywołując session_write_close(); –