Tengo una solicitud de votación larga en mi página. La secuencia de comandos en el lado del servidor se establece en tiempo de espera después de 20 segundos.Varias solicitudes de AJAX se retrasan entre sí
Por lo tanto, cuando el sondeo largo está "inactivo", y el usuario presiona otro botón, el envío de esa nueva solicitud se retrasa hasta que el script anterior expira.
No puedo ver nada mal con el código en el lado jQuery. ¿Por qué se retrasa el evento onclick?
function poll()
{
$.ajax({
url: "/xhr/poll/1",
data: {
user_id: app.user.id
},
type: "POST",
dataType: "JSON",
success: pollComplete,
error: function(response) {
console.log(response);
}
});
}
function pollComplete()
{
poll();
}
function joinRoom(user_id)
{
$.ajax({
url: "/xhr/room/join",
dataType: "JSON",
type: "POST",
data: {
user_id: app.user.id,
room_id: room.id
}
});
}
<button id="join" onclick="javascript:joinRoom(2);">Join</button>
############ PHP Controller on /xhr/poll
$time = time();
while ((time() - $time) < 20)
{
$updates = $db->getNewStuff();
foreach ($updates->getResult() as $update)
$response[] = $update->getResponse();
if (!empty($response))
return $response;
else
usleep(1 * 1000000);
return 'no-updates';
}
¿Podría el "usleep" ser el problema?
¿El problema está en el localhost también? –
¿El código PHP de cualquiera de las llamadas AJAX utiliza sesiones? –