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

216
Views
Laravel queue randomly not dispatching

I'm trying to dispatch jobs from a controller, but sometimes the queue works, and sometimes it will execute the code immediately. On the other hand, dispatching from a command works fine, so I wonder what the difference could be.

Things that I have tried:

  • I tried database and Redis connections and got the problem for both connections
  • Without running queue listen/work, the job will randomly execute, so listen/work cannot be the problem
  • Checked webserver/PHP log for errors, no result
  • Something goes wrong before the static dispatch function. When I put a die in the static dispatch function, it will sometimes kill the app, and sometimes it will still run decode in the handle immediately....

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

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

I'm trying to find what happened before the dispatch function, but I cannot find any function that executes before the static handle function. I have the feeling that something is crashing in PHP and alternatively execute the job immediately, but I cannot find where that happens in the core.

Controller

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

Job

class TestJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct($test)
    {
        $this->test = $test;
    }

    public function handle()
    {
        sleep(30);

        echo 'done';
    }
}

I also tried to create a syntax error in de handle function of the TestJob so that I can see the stack trace, but it shows "1 unknown frame". I wonder what that is

Stacktrace

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

  1. you can check fail_jobs table if there is any error while running your job.

  2. The job will be immediately executed only when you use synchronous driver or synchronous dispatch(for use in local development).

    <?php Somejob::dispatchSync();

  3. Jobs on Redis and database connection will be executed only when you run queue worker.

    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!