Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

jandante's avatar

Horizon not showing Jobs in staging & production

Hi,

I'm trying to configure a forge server to have a staging and production site with each its Horizon instance.

After some tweaking and setup I can now navigate to the dashboard and see that Horizon is active for staging and production environment. When i go to the live version of the Horizon dashboard I see the correct APP_NAME on top and also the queues defined in my .env for production environment. The same goes for the staging environment.

Jobs that are defined in Console / Kernel.php are also executed as expected. I've created a TestJob.php that logs to the laravel.log file and that's working.

In my setup I have the daemon 'php artisan horizon' running in both live & staging folders. Also two schedulers are set in both folders to run 'php artisan schedule:run' every minute.

Only problem now is that I don't see the jobs in my Horizon Dashboard.

So Horizon is working according to the dashboard with production and staging having their own queues / supervisors AND the jobs run (which is great) but I can't see them in the dashboard.

On local environment everything is working as expected. The jobs are executed and the show up in the Horizon dashboard.

The only difference I see is that on my local environment the redis defined in .env with REDIS_DB (2) has a lot of keys in it that correspond to the jobs fired:

127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> KEYS *
  1) "local:725"
  2) "local:262"
  3) "local:642"
  4) "local:667"
  5) "local:881"
  6) "local:471"
  7) "local:125"
  8) "local:532"
  9) "local:897"
 10) "local:610"
 11) "local:961"
 12) "local:375"
 13) "local:528"
 14) "local:252"
 15) "local:276"
 16) "local:397"
 17) "local:444"
 18) "local:694"
 19) "local:609"
 20) "local:510"
 21) "local:168"
 22) "local:442"
 23) "local:393"
...

On my server the redis database has only some keys that are probably used to instantiate horizon:

127.0.0.1:6379[10]> KEYS *
1) "production:last_snapshot_at"
2) "production:supervisor:screen-services-tv-plmS:supervisor-production-long-running"
3) "production:monitor:time-to-clear"
4) "production:supervisors"
5) "production:supervisor:screen-services-tv-plmS:supervisor-production"
6) "production:master:screen-services-tv-plmS"
7) "production:masters"

But nothing for the executed jobs. I suppose this is where the error is but I can't find why this is...

Is there something I'm missing? Can you point me in the right direction?

Thanks in advance.

0 likes
3 replies
bobbybouwmann's avatar
Level 88

The first thing I would check is if you're using the correct QUEUE_CONNECTION in your .env. This should be set to redis. You may start Laravel Horizon, but it could still be processed via some other queue like the default sync queue.

I can't think of another reason for now

1 like
jandante's avatar

Hi @bobbybouwmann ,

first of all thanks for your answer and your many contributions to the Laravel community! Very admirable to see you keeping this up!

You are absolutely right! There was a mismatch in my .env files on local and staging/production. In my local environment I have QUEUE_DRIVER set up and also in queue.php this variable. However on my staging/production .env there is a QUEUE_CONNECTION set which obviously is not parsed by queue.php and defaults to sync. Changing that to QUEUE_DRIVER resolves everything and now my jobs are handled by redis and I can see them in the dashboard!

Thank you very much for pointing me in the right direction!

Please or to participate in this conversation.