AJAX (prototipo / php) ejecutando 2 procesos ajax se bloquea hasta que el primero finaliza

StackOverflow https://stackoverflow.com/questions/805354

Pregunta

Esta pregunta es un seguimiento de mi pregunta anterior: Preguntas anteriores .

Así que configuro mi página para iniciar una llamada ajax para iniciar el procesamiento de algunos registros. Y después de cada registro, se actualiza una fila en otra tabla para realizar un seguimiento del estado de este proceso. Después de que se realiza la primera llamada ajax, tengo otro inicio. Es un Ajax.PeriodicalUpdater y está configurado para alcanzar un archivo que simplemente consulta esa fila en la base de datos y devuelve el estado del proceso original.

Así que esto funciona perfectamente bien ... siempre que el archivo que proporciona las actualizaciones de estado esté fuera de mi aplicación actual. Si pongo el archivo dentro de mi aplicación, entonces no funciona bien. Si veo Firebug, la llamada de PeriodicalUpdater no recupera nada hasta que finaliza la llamada ajax original, simplemente se cuelga, es como si el archivo estuviera colgado y no devolviera nada.

Toda esta aplicación se ejecuta solo en un marco básico que estamos usando. Nada loco, solo maneja el enrutamiento, y aspectos básicos de la plantilla, etc. Así que todas estas funciones / archivos están dentro de esta aplicación y todas estas llamadas ajax se enrutan a través de esto.

¿Qué podría estar causando algo como esto?

¿Fue útil?

Solución

¿Esto puede deberse al límite de conexiones concurrentes soportadas por un navegador a un dominio particular?

Otros consejos

Esto se debe a la serialización de la sesión de PHP. Los datos de la sesión se bloquean hasta que el proceso PHP para cada solicitud haya terminado de escribirse, por lo que las solicitudes adicionales en la misma sesión se pondrán en cola hasta que se libere el bloqueo.

Si sus solicitudes AJAX necesitan acceso al estado de sesión, lea la información que necesita y luego use session_write_close () lo más temprano posible en su código para liberar esos bloqueos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top