2012-09-13 20 views
8

Estaba leyendo un artículo sobre encuestas largas en Nolithius. Debajo de la sección PHP duerme en toda la sesión, está escrito que se debe llamar a la función session_write_close para evitar que toda la sesión llegue a un punto muerto. ¿Qué significa exactamente un punto muerto aquí? ¿Significa que sin esta función, cualquier otra página del mismo dominio abierto en el lado del cliente no podrá recibir datos AJAX de otros scripts (como este) hasta que este haya terminado de ejecutarse y haya devuelto el resultado? ¿Por qué debería suceder esto? ¿Y cómo puede ayudar session_write_close aquí? ¿No lo usará para eliminar toda la personalización del lado del cliente la próxima vez que solicite una página de este dominio una vez que haya recibido los datos de esta solicitud?¿Por qué se debería usar session_write_close en el sondeo largo?

Respuesta

15

Este es mi entendimiento:

Cuando sesiones basado en archivos se utilizan cada solicitud encierra literalmente el archivo hasta el final de la solicitud.

Lo que significa que la próxima solicitud (que también utiliza los datos de la sesión) tiene que esperar a que se libere el bloqueo.

Esto se utiliza para evitar daños en los datos de la sesión.

El uso de session_write_close() limpiará (pero no perderá ningún dato de sesión) y liberará el bloqueo anteriormente en el archivo permitiendo que continúen otras solicitudes.

Esta es una buena práctica, especialmente si tiene scripts que duermen mucho, probablemente.

+1

¿Solo se bloqueará el archivo que está en reposo, o se bloqueará todo el dominio, y por lo tanto no permitirá otras solicitudes AJAX a otros scripts, cargas de página, etc.? – SexyBeast

+0

Si miras de esa manera, sí, todo el dominio estará bloqueado: si tienes todos los scripts abiertos y usando la sesión. Lo mejor es abrir y cerrar selectivamente la sesión cuando y donde la necesite, en lugar de tener acceso a la sesión de scripts. – zaf

+0

Entonces, si uso 'session_write_close', ¿no terminará eso la sesión? Es decir, cuando el usuario solicita otra página de ese dominio, ¿comenzará una nueva sesión? – SexyBeast

Cuestiones relacionadas