Es frecuente que en las aplicaciones existan procesos «pesados» y por lo tanto «lentos» que deseamos que los usuarios no los puedan ejecutar varias veces en un periodo corto de tiempo o que estos procesos se ejecuten de uno en uno, para no sobrecargar el servidor, y así seguir dando buen tiempo de respuesta al resto de procesos y usuarios.
También, nos puede surgir el mismo problema cuando queremos que un recurso de nuestro sistema sólo esté accedido por un único proceso, quedándose a la espera de ser liberado para el resto de procesos que requieran ese recurso.
Algunos ejemplos que pueden requerir esta gestión de proceso único, son:
- La recarga o copia de información desde otro sistema (proceso batch masivo).
- Copia de seguridad de datos o copia de respaldo de backup previos
- Elaboración de informes muy pesados. Procesos de cierre o reconfiguración del sistema.
- Utilización de un recurso del server (fichero, puerto serie, USB, certificado digital, etc.)
- Etc.
Objetivo
Disponer de una lógica, en los proyectos desarrollados en PHPRunner, para controlar:
- Que un proceso específico sólo este en ejecución una única vez y el resto de peticiones que concurran las rechace el sistema.
- Que un proceso específico sólo este en ejecución una única vez y que el resto de peticiones concurrentes se encolen y se liberen según el orden de llegada (cola FIFO).
DEMO: https://fhumanes.com/single_execution/
Si te interesa este tema y deseas obtener el código, cliquea aquí para acceder al artículo