Si el motor PHP ya está ejecutando un script en el servidor, ¿qué pasaría con otras solicitudes simultáneas del navegador al mismo script?
- ¿Se pondrán en cola las solicitudes?
- ¿Serán ignorados?
- ¿Cada solicitud tendrá su propia instancia de script?
- ¿Alguna otra posibilidad?
Respuestas:
El servidor, dependiendo de su configuración, generalmente puede atender cientos de solicitudes al mismo tiempo ; si usa Apache, la
MaxClients
opción de configuración es la que dice:El hecho de que dos clientes soliciten la misma página no es un problema.
Entonces :
No ; excepto si :
MaxClients
procesos actualmente activos; consulte la cita del manual de Apache justo antes.No: esto significaría que solo un usuario puede usar un sitio web al mismo tiempo; esto no sería muy agradable, ¿verdad?
Si fuera el caso, no podría publicar esta respuesta, si presiona F5 en el mismo momento para ver si alguien responde.
(Bueno, SO no está en PHP, pero los principios son los mismos)
Sí ^^
editar después de editar el OP y el comentario:
No existe tal cosa como " instancia de script ": en pocas palabras, lo que sucede cuando se realiza una solicitud a un script es:
Realmente, puede hacer que dos usuarios envíen una solicitud al mismo script PHP (oa distintos scripts PHP que incluyen el mismo archivo PHP) ; Eso definitivamente no es un problema, ¡o ninguno de los sitios web en los que he trabajado funcionaría!
fuente
Si 2 clientes llaman al servidor al mismo tiempo, lo más probable es que el servidor pueda responder a ambos clientes casi simultáneamente. Los clientes aquí los defino a nivel de navegador.
Es decir, en la misma máquina, si está utilizando 2 navegadores para cargar el mismo sitio web / página al mismo tiempo, ambos deben cargarse al mismo tiempo.
sin embargo, dado que estamos hablando de PHP, debe tomar notas especiales sobre las sesiones. Si sus páginas utilizan sesiones, el servidor solo sirve una página a la vez. Esto se debe a que el archivo de sesión se bloqueará hasta que salga un script.
Mira este ejemplo. Los 2 archivos se cargan desde la misma sesión, también conocido como el mismo navegador, el mismo usuario.
Tenga en cuenta que scriptb.php solo se inicia después de que se sirva scripta.php. esto se debe a que cuando se inició scripta.php, el archivo de sesión está bloqueado a otros scripts para que scripta.php pueda escribir en el archivo de sesión. Cuando se completa scripta.php, el archivo de sesión se desbloquea y, por lo tanto, otros scripts pueden usarlo. Por lo tanto, scriptb.php esperará hasta que se libere el archivo de sesión, luego bloqueará el archivo de sesión y lo usará.
Este proceso se seguirá repitiendo para evitar que varios scripts se escriban en el mismo archivo de sesión y provoquen retrasos. Por lo tanto, se recomienda llamar a
session_write_close
() cuando ya no esté usando la sesión, especialmente en un sitio web que usa muchos iframes o AJAX.fuente
Me encontré con esto yo mismo. Básicamente, debe llamar
session_write_close()
para evitar el bloqueo de un solo usuario. Sinsession_write_close()
embargo, asegúrese de no intentar modificar ninguna variable de sesión una vez que llame . Una vez que lo llame, trate las sesiones como de solo lectura a partir de ese momento.fuente
A menos que esté ejecutando una configuración muy no estándar, su servidor web (Apache, IIS, nginx, etc.) tendrá múltiples procesos que ejecutan PHP por separado para cada solicitud que ingresa al servidor. Las solicitudes simultáneas se atenderán simultáneamente.
fuente