1 votos

¿Por qué el script de Debian en la sesión de PHP toca todos los archivos abiertos primero?

Estoy estudiando /usr/lib/php/sessionclean en este momento. Hay una cosa que no entiendo completamente. ¿Cuál es el propósito de tocar todos los archivos de sesión abiertos antes de limpiar? Entiendo que esto evita la eliminación de sesiones caducadas que están abiertas actualmente pero que aún no se han escrito. ¿Pero no es esto todavía una condición de carrera? ¿Qué sucede si un proceso PHP abre un archivo de sesión caducado entre los comandos táctiles y de eliminación?

1voto

John Mahowald Puntos 76

Los archivos de sesión que son mayores que el máximo tiempo de vida, en el momento de la find comando evalúa ellos, serán eliminados.

Los archivos se actualizarán a más tardar cuando el script PHP que finaliza la ejecución. Sin embargo, tal vez no es realmente justo para matar a una sesión por inactividad mientras se está ejecutando. Por lo tanto, el touch actualizaciones de modificar el tiempo en los archivos de sesión que tiene un proceso de php se está ejecutando actualmente.

Sí, hay una condición de carrera de un proceso de php a partir de la touch, reanudar una sesión de edad, y ser eliminado porque no finalizar antes de la find hizo la recolección de basura. La sesión ya existía para toda su vida, probablemente varios minutos. La falta de una extensión en una fracción de segundo de la ventana no es un gran negocio.


La alternativa, PHP integrado en la aplicación, tiene un 1% de posibilidad de la ejecución de la recolección de basura en la ejecución. De bajo volumen sitios, es posible que no se disparará de forma fiable.

Además, el script externo permite el bloqueo de la seguridad en la sesión de directorio, que es por qué los mantenedores de Debian hicimos de esa manera.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: