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?
8
A
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.
Cuestiones relacionadas
- 1. PHP Save Session cuando se usa session_write_close();
- 2. ¿Por qué debería usar MXML?
- 3. ¿Por qué debería usar glBindAttribLocation?
- 4. ¿Por qué debería evitar usar el Dispatcher?
- 5. ¿Por qué debería usar Drools?
- 6. ¿Por qué debería usar Flex?
- 7. ¿Por qué debería usar @properties?
- 8. Implementando un sondeo largo de manera asíncrona
- 9. sondeo largo vs transmisión por aproximadamente 1 actualización/segundo
- 10. ¿Por qué debería usar "aplicar"?
- 11. Django, Ajax sondeo largo, PostgreSQL: transacción inactivo
- 12. sondeo largo netty nio framework java
- 13. Mejorando el rendimiento de Ajax de sondeo largo
- 14. ¿Por qué debería usar 'aplicar' en Clojure?
- 15. AJAX sondeo largo, aumentando la eficiencia
- 16. ¿Por qué debería/no debería usar el operador "nuevo" para instanciar una clase, y por qué?
- 17. ¿Por qué debería usar el comando GO en sybase?
- 18. ¿Por qué no debería usar marcos HTML?
- 19. ¿Por qué no debería usar UNIVERSAL :: isa?
- 20. ¿Por qué se debería usar "git merge -s ours"?
- 21. ¿Cuándo y por qué debería usar TStringBuilder?
- 22. EF4.1 POCO: Por qué debería usar ICollection
- 23. ¿Por qué debería usar un CAAnimationGroup?
- 24. Nginx como proxy inverso durante el sondeo largo
- 25. ¿Por qué no debería usar AutoDual?
- 26. ¿Por qué debería aprender y usar puntales?
- 27. ¿Por qué debería usar la ubicación nueva?
- 28. ¿Por qué debería usar exit select?
- 29. ¿Por qué no debería usar Unity?
- 30. ¿Por qué debería usar Doctrine sobre Zend_Db?
¿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
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
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