Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Archivos, colas y tareas en segundo plano

5 tareas · 40 min · Principiante

Fuera de la petición web no hay sesión ni middleware: un trabajo en cola corre horas después, en otro proceso, y solo sabe del cliente lo que lleva consigo. La bodega de una ferretería de Arcaduz descargó la remisión de su pedido y le salió con los productos y la dirección de otra distribuidora. Tienes el código de los trabajos, el registro de la cola de esa madrugada y el del almacenamiento de adjuntos. Solo se lee lo que el equipo entregó.

0 de 5 · 0%

Objetivo de la sala

Fuera de la petición web no hay sesión ni middleware: un trabajo en cola corre horas después, en otro proceso, y solo sabe del cliente lo que lleva consigo. La bodega de una ferretería de Arcaduz descargó la remisión de su pedido y le salió con los productos y la dirección de otra distribuidora. Tienes el código de los trabajos, el registro de la cola de esa madrugada y el del almacenamiento de adjuntos. Solo se lee lo que el equipo entregó.

En el panel, el inquilino lo fija el middleware al empezar cada petición y lo borra al terminar. Un trabajo en cola no pasa por ahí: lo toma un proceso que atiende un trabajo tras otro sin reiniciarse, y todo lo que quedó guardado en una variable estática del trabajo anterior sigue ahí cuando empieza el siguiente.

Por eso un trabajo tiene que llevar en su propia carga el identificador del inquilino para el que se encoló, fijarlo al empezar y limpiarlo al terminar, pase lo que pase. Si un trabajo arranca sin inquilino, lo correcto es que falle y avise, no que siga con lo que encuentre: un error ruidoso se arregla, un cruce silencioso se descubre cuando un cliente se queja.

Responde para continuar

Un trabajo en cola necesita saber para qué cliente corre. ¿De dónde debe sacarlo?

Ver pista de ayuda

El middleware solo existe dentro de una petición web.

Abre ContextoInquilino.php, EnviarResumenDiario.php y GenerarRemision.php. Luego lee registro-cola.txt: cada línea de inicio dice quién encoló el trabajo y qué inquilino estaba activo en el proceso cuando empezó. Busca el trabajo que generó la remisión del pedido de la queja y fíjate en el que corrió justo antes en el mismo proceso.

Responde para continuar

¿Qué trabajo dejó fijado el inquilino con el que corrió la remisión que descargó la bodega? Escribe su identificador.

El trabajo buscó el pedido por número con el filtro del inquilino activo. Lee numeracion.txt para saber si ese número existe en más de un cliente, y cruza el inquilino con el que corrió el trabajo con inquilinos.txt.

Responde para continuar

¿De qué cliente eran los productos y la dirección de la remisión que descargó la bodega? Escribe su slug.

Arreglar el contexto no basta. Mira la ruta con la que GenerarRemision.php guarda el PDF y con la que DescargarRemision.php lo entrega: solo lleva el número del pedido, y ese número se repite entre clientes. Dos clientes con el mismo consecutivo escriben el mismo archivo, y el último en escribir gana. En un almacenamiento compartido, la ruta de todo archivo de un cliente empieza por su identificador de inquilino, y la descarga comprueba que el prefijo coincide con el de la sesión.

Revisa registro-almacenamiento.txt antes de la madrugada de la queja.

Responde para continuar

¿Qué trabajo, encolado por otro cliente, ya había escrito en ese mismo archivo antes de que ferreteria-socavon pidiera su primera remisión? Escribe su identificador.

En el mismo registro de la cola hay un trabajo que falló dos veces por no tener inquilino. El equipo quiere «que ese trabajo deje de fallar» y lo pone en la misma lista que la remisión cruzada.

Responde para continuar

¿Qué cambios propones para el segundo plano de Arcaduz?

Ver pista de ayuda

Distingue el trabajo que falló sin entregar nada del que terminó «correcto» con datos de otro.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad