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

gdonald's avatar

[Solved] Horizon doesn't show any dispatched jobs

Hello,

I am trying to learn to use Horizon, Queues, and Jobs. I've read these pages multiple times over the past couple of days:

https://laravel.com/docs/10.x/horizon

https://laravel.com/docs/10.x/queues

https://laravel.com/docs/10.x/queues#creating-jobs

I've created a Job class, it's just a simple echo statement:

public function handle(): void
{
    echo "here!";
}

Then using php artisan tinker I'm dispatching my job:

App\Jobs\MyJob::dispatch();

This returns something like:

= Illuminate\Foundation\Bus\PendingDispatch {#7689}

which seems to mean my job was dispatched with no errors. So now I'm expecting to look in http://127.0.0.1:8000/horizon and see my job listed somewhere, but I do not. I do not see any errors in my browser console. I do not see any errors anywhere.

I have php artisan horizon, php artisan queue:listen, and php artisan queue:work --queue=default all running in seperate terminals. There is no output to show me my job was enqueued or ran or anything, no errors. I can dispatch more jobs but still no output.

My local redis is running, and I've tried restarting it. It works fine for me when I use redis-cli to connect to it and set/get keys.

I also added snapshotting to my scheduler:

protected function schedule(Schedule $schedule): void
{
    $schedule->command('horizon:snapshot')->everyFiveMinutes();
}

and I see it counting down when I run php artisan schedule:list.

I'm not sure what I'm missing. I'm using latest Laravel 10.x. This is a new app I just made a few days ago.

It would be helpful to know how to debug this. I'm not sure what to do with everything just being silent like it is.

What else can I show you about my setup/config?

Thanks.

0 likes
3 replies
LaryAI's avatar
Level 58

Based on the information provided, it seems like you have set up Horizon, Queues, and Jobs correctly, but you are not seeing any dispatched jobs in Horizon. Here are a few things you can check to debug the issue:

  1. Make sure you have configured Horizon correctly in your config/horizon.php file. Check that the use statement at the top of the file references the correct Horizon class and that the environments array includes the environment you are running in (e.g., 'local').

  2. Verify that you have started the Horizon worker process by running the php artisan horizon command. This command should be running continuously in the background to process the queued jobs.

  3. Check if the jobs are being processed by running the php artisan queue:work command. This command should also be running continuously in the background to process the queued jobs. Make sure you are running it in the same environment as Horizon.

  4. Ensure that your job class is properly registered in the config/queue.php file. Check the connections array and make sure the redis driver is configured correctly.

  5. Verify that your Redis server is running and accessible. You mentioned that you can connect to it using redis-cli, but double-check that the connection details in your Laravel configuration (config/database.php) match the Redis server's host, port, and password (if applicable).

  6. Check the Horizon dashboard by visiting http://127.0.0.1:8000/horizon in your browser. Make sure you are logged in as an authorized user (if authentication is enabled). If you don't see any jobs listed, try refreshing the page or checking the Horizon logs for any error messages.

If none of these steps resolve the issue, it would be helpful to see your config/horizon.php and config/queue.php files, as well as any relevant log files or error messages.

gdonald's avatar

Running

php artisan queue:work

instead of

php artisan queue:work --queue=default

got things working for me. I have no idea why this helps since I only have one queue and it is named "default" and is defined exactly that way in several places in queue.php and horizon.php.

jenno's avatar

Hi @gdonald, I’ve spent the last 3 days trying to figure out why I was having the same issue as you—it was driving me crazy. In the end, I realized that I had xdebug enabled in the php.ini file, and this was preventing Horizon from working.

So, I modified the php.ini file, removing xdebug:

- zend_extension=/Applications/.../xdebug-83-arm64.so
- xdebug.mode=debug,develop,coverage
- xdebug.start_with_request=yes
- xdebug.start_upon_error=yes

+ #zend_extension=/Applications/.../xdebug-83-arm64.so
+ #xdebug.mode=debug,develop,coverage
+ #xdebug.start_with_request=yes
+ #xdebug.start_upon_error=yes

Everything started working correctly again.

Additional notes about my issue:

  • PHP 8.3
  • Laravel 11
  • I’m using Laravel Herd
  • When I ran php artisan horizon in one terminal, I couldn’t execute other artisan commands in other terminals.

I hope this can be helpful to you or to others who come across this post while searching for a (possible) solution.

Please or to participate in this conversation.