Laravel queued jobs processed immediately even with a delay

To test locally you could set the driver to

QUEUE_DRIVER=database

And run php artisan queue:table.

And then php artisan migrate, so you would get your queue saved into the database, so you visually could see what`s going on.

And to run your queues, simply run php artisan queue:listen ... and leave it running as you do with artisan serve.


This was driving me crazy for ages before I realised that Laravel 5.7 renamed QUEUE_DRIVER to QUEUE_CONNECTION in the .env files


For someone who has made the changes from previous answers and still didn't work, check the default value of the queue file like this: dd(Config::get('queue.default'))

For me it didn't change until flushing the config cache:

php artisan config:clear

You have to set up the queue driver you want to use in your project's root dir's .env file.

By default, the queue driver is sync which does exactly what you are describing, executing queues immediately.

You can choose of some different queue drivers, such as beanstalked or redis (which would be my choice). There's an excellent freebie on laracasts.com about setting up a beanstalked queue.

To view all available queue driver options in Laravel, have a look here.

Here's a .env example

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync      // <-- Put the desired driver here

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Tags:

Jobs

Laravel 5