Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

226
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!