Debemos bloquear la ejecución concurrente del Init::update()
de cualquier plugin, para evitar problemas.
Si activamos un plugin y después cargamos un javascript que llame varias veces al controlador, para cada llamada se va a ejecutar un hilo, y en cada hilo se va a ejecutar el Plugins::init()
y se va a llamar al Init::update()
del plugin, porque el navegador ha llamado tan rápido que no ha dado tiempo a que se ejecute uno después del otro, sino que virtualmente se han ejecutado a la vez.
Antes de ejecutar el Init::update()
del plugin debemos:
MyFiles/Tmp/plugins-init.lock
.MyFiles/Tmp/plugins-init.lock
.Init::update()
MyFiles/Tmp/plugins-init.lock
.
17-01-2024 10:18:38 daniel89fg_739 Y como alternativa no sería interesante guardar en el archivo plugins.json otro campo con la fecha datetime de ejecución del update(). De ese modo al ejecutar el update() si no está lo ejecuta y actualiza el json, si existe y tiene más de 5 minutos, ejecuta el update y actualiza la fecha. De este modo se me ocurre que podría ser interesante saber cuando se ejecuto el update ¿como lo ves? |
|
PRO |
18-01-2024 12:43:39 neorazorx_1 Si los hilos se ejecutan ala vez, por mucho que cambies el plugins.json, probablemente los otros hilos ya lo han leído |
05-02-2024 11:06:15 raljopa_851 ENVIADA - https://github.com/NeoRazorX/facturascripts/pull/1510 |