Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

217
Vistas
La cola de Laravel no se envía aleatoriamente

Estoy tratando de enviar trabajos desde un controlador, pero a veces la cola funciona y, a veces, ejecuta el código de inmediato. Por otro lado, el envío desde un comando funciona bien, así que me pregunto cuál podría ser la diferencia.

Cosas que he probado:

  • Probé la base de datos y las conexiones de Redis y obtuve el problema para ambas conexiones
  • Sin ejecutar queue listen/work, el trabajo se ejecutará aleatoriamente, por lo que listen/work no puede ser el problema
  • Se revisó el registro del servidor web/PHP en busca de errores, sin resultado
  • Algo sale mal antes de la función de despacho estático. Cuando coloco un dado en la función de envío estático, a veces matará la aplicación y, a veces, seguirá ejecutando la decodificación en el identificador inmediatamente...

proveedor/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php

 public static function dispatch() { die('xxx'); return new PendingDispatch(new static(...func_get_args())); }

Estoy tratando de encontrar lo que sucedió antes de la función de despacho, pero no puedo encontrar ninguna función que se ejecute antes de la función de manejo estático. Tengo la sensación de que algo está fallando en PHP y, alternativamente, ejecuto el trabajo de inmediato, pero no puedo encontrar dónde sucede eso en el núcleo.

Controlador

 class CreateTestJob { public function __invoke(Request $request) { TestJob::dispatch(rand(0, 999999)); } }

Trabajo

 class TestJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public function __construct($test) { $this->test = $test; } public function handle() { sleep(30); echo 'done'; } }

También traté de crear un error de sintaxis en la función de manejo de TestJob para poder ver el seguimiento de la pila, pero muestra "1 marco desconocido". me pregunto que es eso

seguimiento de pila

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

  1. puede verificar la tabla fail_jobs si hay algún error mientras ejecuta su trabajo.

  2. El trabajo se ejecutará inmediatamente solo cuando use un controlador síncrono o un despacho síncrono (para uso en desarrollo local).

    <?php Somejob::dispatchSync();

  3. Los trabajos en Redis y la conexión a la base de datos se ejecutarán solo cuando ejecute el trabajador de la cola.

    php artisan queue:work

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda