Giter Club home page Giter Club logo

horizon's Introduction

Laravel Logo

Build Status Total Downloads Latest Stable Version License

About Laravel

Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:

Laravel is accessible, powerful, and provides tools required for large, robust applications.

Learning Laravel

Laravel has the most extensive and thorough documentation and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.

You may also try the Laravel Bootcamp, where you will be guided through building a modern Laravel application from scratch.

If you don't feel like reading, Laracasts can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.

Laravel Sponsors

We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel Partners program.

Premium Partners

Contributing

Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the Laravel documentation.

Code of Conduct

In order to ensure that the Laravel community is welcoming to all, please review and abide by the Code of Conduct.

Security Vulnerabilities

If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [email protected]. All security vulnerabilities will be promptly addressed.

License

The Laravel framework is open-sourced software licensed under the MIT license.

horizon's People

Contributors

ankurk91 avatar arjanwestdorp avatar bert-w avatar browner12 avatar cannonb4ll avatar cretueusebiu avatar crynobone avatar dbpolito avatar dependabot[bot] avatar driesvints avatar glamorous avatar grldk avatar halaei avatar hxnk avatar jpuck avatar lucasmichot avatar michaeldyrynda avatar mmachatschek avatar mvdnbrk avatar ntzm avatar nunomaduro avatar paras-malhotra avatar prinsfrank avatar sdekkers avatar sebdesign avatar stylecibot avatar taylorotwell avatar themsaid avatar tobiasfroberg avatar tomswinkels avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

horizon's Issues

Call to undefined method Illuminate\Queue\RedisQueue::readyNow()

I'm yet to figure out why this is happening...


protected function timeToClearPerQueue(Supervisor $supervisor, Collection $pools)
--
ย  | {
ย  | return $pools->mapWithKeys(function ($pool, $queue) use ($supervisor) {
ย  | $size = $this->queue->connection($supervisor->options->connection)->readyNow($queue);
ย  | ย 
ย  | return [$queue => ($size * $this->metrics->runtimeForQueue($queue))];
ย  | });


Update to 5.5

Dear !

I really want this feature. But I can not find a way to update to laravel 5.5 , or any document related to laravel 5.5 dev branch

Can you point me to that ?

Command "horizon" is not defined.

Here is the steps I do:

composer require laravel/horizon
php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"
cp vendor/laravel/horizon/config/horizon.php config/

Then I execute

php artisan horizon

it show me the error:

[Symfony\Component\Console\Exception\CommandNotFoundException]
  Command "horizon" is not defined.

Here is the logs:

#0 /var/www/laravel-stock-calc/vendor/symfony/console/Application.php(209): Symfony\Component\Console\Application->find('horizon')
#1 /var/www/laravel-stock-calc/vendor/symfony/console/Application.php(130): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#2 /var/www/laravel-stock-calc/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#3 /var/www/laravel-stock-calc/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#4 {main}
[2017-08-12 14:30:01] local.ERROR: Symfony\Component\Console\Exception\CommandNotFoundException: Command "horizon" is not defined. in /var/www/laravel-stock-calc/vendor/symfony/console/Application.php:584
Stack trace:
#0 /var/www/laravel-stock-calc/vendor/symfony/console/Application.php(209): Symfony\Component\Console\Application->find('horizon')
#1 /var/www/laravel-stock-calc/vendor/symfony/console/Application.php(130): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#2 /var/www/laravel-stock-calc/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#3 /var/www/laravel-stock-calc/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#4 {main}
[2017-08-12 14:30:22] local.ERROR: Symfony\Component\Console\Exception\CommandNotFoundException: Command "horizon" is not defined. in /var/www/laravel-stock-calc/vendor/symfony/console/Application.php:584
Stack trace:
#0 /var/www/laravel-stock-calc/vendor/symfony/console/Application.php(209): Symfony\Component\Console\Application->find('horizon')
#1 /var/www/laravel-stock-calc/vendor/symfony/console/Application.php(130): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#2 /var/www/laravel-stock-calc/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#3 /var/www/laravel-stock-calc/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#4 {main}

how to monitor job system

Now , I created the new system as horizon system . but i want to don't change my old system 's code. in new system , I operated the command "php artisan horizon". now I created a job in the old system. but this job is operated in the new system. I just want to use the horizon system as a monitor system. Do you have some solutions .

Axios or vue-resource

I am eager to know ,is horizion need axios? I can't find axios this horizon project .

Use with laravel 5.3

Dear !

My main application are running on laravel 5.3. I wonder that I created a blank separate project to install laravel 5.5 + horizon and then I put my application redis connection into this project.

But when I run horizon, It do not show any metrics .

Can you tell me , which part I was wrong ?

Horizon Dashboard not loading.

Hi Guys,

I'm experiencing problems with the Horizon Dashboard. The stats on the main dashboard page are not loading at all. I am running PHP 7.1.8 on Laravel Valet 2.0.5.

I've used the Network tab on Chrome DevTools and there seems to be a few ajax requests that are failing due to being returned a 500 error: Screenshot of Chrome DevTools

I have put the two different stacktraces into Gist's as they are too long to post in this issue apparently. Gist 1 - Gist 2

Any help is appreciated. Thanks in advance.

Horizon and Forge

Will forge be updated to use Horizon configuration when using workers?

Horizon::auth access to logged in User?

I'm trying to access the logged in User so I can validate if the dashboard should be shown but inside the Horizon::auth callback all attempts to get the User from the request return null. I'm presuming this is because the session middleware hasn't fired yet? Has anyone else come across this and found a solution?

I've tried calling the auth method in the register and boot methods of my AppServiceProvider fyi.

[Question] Where should failed job be stored at?

Hi,

I'm testing around with horizon with a new Laravel 5.5 app.
I created a Job that throws an Exception after a second to emulate a failing job.

The only settings I have changed are queue and broadcast driver to redis. But when queue the job, I always get another Exception too:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'jarvis.failed_jobs' doesn't exist (SQL: insert into `failed_jobs` (`connection`, `queue`, `payload`, `exception`, `failed_at`)...

I know I can create this table with artisan, but my question is: Should the jobs be stored in both? the failed_jobs table and the redis? Or am I missing a configuration? There is only one implemented JobRepository https://github.com/laravel/horizon/blob/9ab7c9fd041674f48a47049a5a88350586c7fbb0/src/Repositories/RedisJobRepository.php I could found. That makes me completely baffled -.-.

Thank you.

Failed jobs page doen't show the jobs

When I navigate into the failed jobs page it only shows the loader and it doen't list any failed jobs even though there are 4 of them and they are retrieved by the API.

horizon

Order snapshots by score

Metric Jobs and Queues return an array_flip(): Can only flip STRING and INTEGER values! error for src/Repositories/RedisMetricsRepository.php on line 234. If I see it right, the problem is, scores are stored as floats, not as integers, and floats cannot be array keys. Sadly I'm not an expert in Redis (not even a beginner yet sadly), so at this point I can't propose a PR (but I guess either we should have integer scores, we should cast them before flipping, or we shouldn't flip).

By the way I'm on PHP 7.1, with Horizon 1.0.0 and Laravel 5.5.

Horizon Commands are only available in console.

If you resolve Console/Kernel and call all() method on it from a web route, the list of commands returned do not include horizon commands. Found out that horizon command registration is wrapped inside runningInConsole() check.

        if ($this->app->runningInConsole()) {
            $this->commands([
                Console\AssetsCommand::class,
                Console\HorizonCommand::class,
                Console\ListCommand::class,
                Console\PurgeCommand::class,
                Console\PauseCommand::class,
                Console\ContinueCommand::class,
                Console\SnapshotCommand::class,
                Console\SupervisorCommand::class,
                Console\SupervisorsCommand::class,
                Console\TerminateCommand::class,
                Console\TimeoutCommand::class,
                Console\WorkCommand::class,
            ]);
        }

I understand these commands are not required to be registered in the container for HTTP requests but would it be possible to at least take the Console\SnapshotCommand::class out of the console check and make it available in app container for HTTP requests. This would help if you are scheduling commands using http requests.

Support worker with multiple queues

If you have a worker that has multiple queues, like: high,default several places doesn't work, like Current Workload > Jobs and Current Workload > Wait.

Nothing is broken, but it simply doesn't load data properly.

Laravel 5.5 & Horizon (Why not PHP 7.0?)

Reading the README I've seen that Horizon requires PHP 7.1+ & Laravel 5.5 but Laravel 5.5 requires 7.0+...

Is this a mistake or is intended and we won't be able to use Horizon with Laravel in a PHP 7.0 environment.

This could be an obvious answer, but if so, I'm interested in why 7.1+ and not 7.0+. I mean, what's the key feature that doesn't allow this package to downgrade to 7.0.

Thanks!

Can't publish package assets

  • Laravel Version: 5.4.28
  • PHP Version: 7.1.5
  • Composer Version: 1.4.1
  • Horizon Version: 0.1.0

Description:
Can't publish the package assets or the "horizon.php" config file.

Steps To Reproduce:
composer require laravel/horizon
Then:
php artisan vendor:publish

Result

  1. Composer actually installs the package in the vendor folder and adds it in the 'composer.json' file.
  2. The vendor publish only publishes the Laravel framework assets (Notification, Pagination, Mails) but not the horizon assets.

what is this wip auto-commit / deploy command Taylor used in his Laracon keynotes?

I know this is not specifically related to Horizon but he used it a few times during the video. Is it just a custom alias for an auto-git-commit ?

I also like the command he used to deploy to the cloud

Are these Envoyer-related? Is there somewhere where those most excellent shortcuts are shared? Would love to become more productive and use these myself!

Switch Less to SASS

What about switching from Less to SASS - SASS is much more used now
Bootstrap 4 will also use SASS syntax

horizon config single one redis connection, can prefix be optional?

@themsaid

d00d0b this repo make horizon use one redis. I think prefix can be optional.

public static function use($connection, $prefix = null)
{
    $config = config("database.redis.{$connection}");

    config(['database.redis.horizon' => array_merge($config, [
        'options' => ['prefix' => $prefix ?: 'horizon:']
    ])]);
}

Multiple apps use one redis server in aws, i think they can use one redis connection shared in different apps.

use within 5.4

Is there a way or can it be used within a 5.4 app? Would be great if it can.

Call to undefined function Laravel\Horizon\Console\pcntl_async_signals()

Brand new installation of Laravel 5.5 and horizon. Nothing else has been added to Laravel. For installation I ran:

composer create-project laravel/laravel laravel55 dev-develop

cd laravel55

composer install laravel/horizon

php artisan vendor:publish # (Selected option 0)

php artisan serv

and in another console I ran php artisan horizon

In case it helps I am running this on a Windows development machine if that might cause any issues.

Any chance to support other queue drivers?

I see there is a Laravel\Horizon\RedisQueue class extending Illuminate\Queue\RedisQueue.
I have also my own extension of Illuminate\Queue\RedisQueue that works exactly like the base class except the way it pops jobs out of the queue.
What is the best way to have my own queue driver supported by horizon?

Proposal - Notification when it's too long time since last job added

As a proposal for notifications is to catch problems with not only too much jobs in queue, but also too little. So we can see if something is "stuck" and does not dispatch jobs into queue as usual.

So maybe some metric "Time since last job added" and configure some threshold for alert/notification when this is reached.

[Bug] Vue component request increase thrash

I am currently testing out ^0.1.0 of horizon, and I noticed an issue with the dashboard. After navigating through the routes multiple times, I see an increase the number of api requests. It also appears that these requests from one page continue even after visiting another page with vue-router.

GIF: Horizon request thrash example

I believe the issue lies in how setInterval() is being called but not managed in each of the Vue components. Each time a component is mounted() a new interval is created.

Here's my thought on a solution:

  • Assign setInterval() to a data variable on each component, such as this.interval = setInterval()
  • Call clearInterval(this.interval) whenever a component is no longer in use (i.e. destroyed, deactivated, etc)

Here are the unmanaged setInterval() calls:

If you'd like a pull request, let me know.

Excessive use of Redis databases

By default Horizon uses Redis databases 9, 10, 11, 12, 13, 14, 15 for jobs, supervisors, tags, metrics, locks, etc.

I'm sure it makes sense to avoid userland namespace conflicts, like job:{id}.

Can Horizon be configured to only use one or two databases? Are there any drawbacks to that? Maybe all Horizon keys could be prefixed with horizon:?

I'm asking because a lot of Redis hosting providers only supply a single database 0, some offer more in higher tiers, very few offer 16 out of the box.

Extend the Backend

Is there currently no Way to extend the Backend with own Functions?
Because i don`t see any extra Views / Assets Folder for Horizon.

Empty tag name allowed for monitoring

Horizon allows us to monitoring an empty tag name and unable to stop monitoring the empty tag, returning an error MethodNotAllowedHttpException because the DELETE request is made on another route.

Error while installing Horizon on windows

Hi,
When i try to install Horizon on windows dev machine it gives following error

Problem 1
    - Installation request for laravel/horizon dev-master -> satisfiable by laravel/horizon[dev-master].
    - laravel/horizon dev-master requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.

But pcntl is not available for windows

How to install without pcntl.

php lock

i have an issue. understand, that it's about my configuration, but i can't get with it.
when running horizon it lock the php, so it can not work on other tasks. tried via both apache and cli.
php interactive shell (php -a) works. but when i want to run some php file - it doesn't
when i terminate the horizon all php task get processed.

im running horizon on my macbook, have apache 2.4 with mpm prefork module installed via home brew. php 7.1. laravel 5.5 upgraded from 5.2.

[Proposal] Only display allowed properties of the payload for failed jobs insight

Sometimes we want hide sensitive information from logs because of security reasons.

In the current situation when queue jobs failed it displays all the properties of the object in failed jobs insight.

Ex:

User
- id
- name
- email

Above example user object has name and email property, but when queue job failed we only want to display id and name. We want to ignore email when log payload

[Question] Where should I put timeout?

I'm using public $timeout = 3600 inside my job and tries => 1 in horizon.php and I got Illuminate\Queue\MaxAttemptsExceededException: A queued job has been attempted too many times. The job may have previously timed out..

[2017-08-18 02:56:48] Processing: App\Jobs\VideosJob
[2017-08-18 02:58:19] Processing: App\Jobs\VideosJob
[2017-08-18 02:58:19] Failed:     App\Jobs\VideosJob
[2017-08-18 03:01:53] Processed:  App\Jobs\VideosJob

The job runs one time until finish like how I want and the process it's not killed. Weird!

With tries => 0 my output is

[2017-08-18 02:45:28] Processing: App\Jobs\VideosJob
[2017-08-18 02:46:59] Processing: App\Jobs\VideosJob
[2017-08-18 02:48:29] Processing: App\Jobs\VideosJob
[2017-08-18 02:50:00] Processing: App\Jobs\VideosJob
[2017-08-18 02:51:04] Processed:  App\Jobs\VideosJob
[2017-08-18 02:51:04] Processed:  App\Jobs\VideosJob
[2017-08-18 02:51:04] Processed:  App\Jobs\VideosJob
[2017-08-18 02:51:05] Processed:  App\Jobs\VideosJob

The job runs four times. ๐Ÿ˜ข

My job fails every 90 seconds even I use public $timeout = 3600 inside job or 'timeout' => 3600 in horizon.php.

Retrying a failed job 419 response

I have found that I can eventually retry all failed jobs after multiple page refreshes. However, I noticed that some retry attempts do not actually succeed after clicking the retry button. When I pulled up the web inspector, I found that these requests had a 419 unknown status response from the server with a response containing.

{
    "message": ""
}

I don't know the reason for this error (nginx, php 7.1, ubuntu 16.04), but some error handling on the retry button's axios request would at least allow a user to reattempt another retry if a 419 occurs without a full page refresh.

Move state management to Vuex

State is currently managed per component/page. Moving to Vuex will allow better state management and enable data sharing between components/pages.

Items to be worked on

  • Add Vuex as dependency to Vue; enable creating state, getters, mutators, modules & actions.
  • Convert stats data API from Dashboard component to Vuex
  • Convert workers data API from Dashboard component to Vuex

Horizon Dashboard infinite load. Parse error: syntax error, unexpected '='

http://laravel55.dev/horizon/api/stats

{
    "message": "Parse error: syntax error, unexpected '='",
    "file": "/home/laravel/Sites/laravel55/vendor/laravel/horizon/src/WaitTimeCalculator.php",
    "line": 75,
    "trace": [
        {
            "file": "/home/laravel/Sites/laravel55/vendor/composer/ClassLoader.php",
            "line": 301,
            "function": "Composer\\Autoload\\includeFile",
            "args": [
                "/home/laravel/Sites/laravel55/vendor/laravel/horizon/src/WaitTimeCalculator.php"
            ]
        },
        {
            "function": "loadClass",
            "class": "Composer\\Autoload\\ClassLoader",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\WaitTimeCalculator"
            ]
        },
        {
            "function": "spl_autoload_call",
            "args": [
                "Laravel\\Horizon\\WaitTimeCalculator"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 752,
            "function": "__construct",
            "class": "ReflectionClass",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\WaitTimeCalculator"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 631,
            "function": "build",
            "class": "Illuminate\\Container\\Container",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\WaitTimeCalculator"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 586,
            "function": "resolve",
            "class": "Illuminate\\Container\\Container",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\WaitTimeCalculator",
                []
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Application.php",
            "line": 721,
            "function": "make",
            "class": "Illuminate\\Container\\Container",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\WaitTimeCalculator",
                []
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php",
            "line": 107,
            "function": "make",
            "class": "Illuminate\\Foundation\\Application",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\WaitTimeCalculator"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php",
            "line": 677,
            "function": "app",
            "args": [
                "Laravel\\Horizon\\WaitTimeCalculator"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/horizon/src/Http/Controllers/DashboardStatsController.php",
            "line": 28,
            "function": "resolve",
            "args": [
                "Laravel\\Horizon\\WaitTimeCalculator"
            ]
        },
        {
            "function": "index",
            "class": "Laravel\\Horizon\\Http\\Controllers\\DashboardStatsController",
            "type": "->",
            "args": []
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
            "line": 54,
            "function": "call_user_func_array",
            "args": [
                [
                    {},
                    "index"
                ],
                []
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
            "line": 45,
            "function": "callAction",
            "class": "Illuminate\\Routing\\Controller",
            "type": "->",
            "args": [
                "index",
                []
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 204,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\ControllerDispatcher",
            "type": "->",
            "args": [
                {
                    "uri": "horizon/api/stats",
                    "methods": [
                        "GET",
                        "HEAD"
                    ],
                    "action": {
                        "uses": "Laravel\\Horizon\\Http\\Controllers\\DashboardStatsController@index",
                        "controller": "Laravel\\Horizon\\Http\\Controllers\\DashboardStatsController@index",
                        "namespace": "Laravel\\Horizon\\Http\\Controllers",
                        "prefix": "horizon",
                        "where": []
                    },
                    "controller": {},
                    "defaults": [],
                    "wheres": [],
                    "parameters": [],
                    "parameterNames": [],
                    "computedMiddleware": [
                        "Laravel\\Horizon\\Http\\Middleware\\Authenticate"
                    ],
                    "compiled": {}
                },
                {},
                "index"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 161,
            "function": "runController",
            "class": "Illuminate\\Routing\\Route",
            "type": "->",
            "args": []
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 612,
            "function": "run",
            "class": "Illuminate\\Routing\\Route",
            "type": "->",
            "args": []
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 30,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Router",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/horizon/src/Http/Middleware/Authenticate.php",
            "line": 18,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Laravel\\Horizon\\Http\\Middleware\\Authenticate",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 102,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 614,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 573,
            "function": "runRouteWithinStack",
            "class": "Illuminate\\Routing\\Router",
            "type": "->",
            "args": [
                {
                    "uri": "horizon/api/stats",
                    "methods": [
                        "GET",
                        "HEAD"
                    ],
                    "action": {
                        "uses": "Laravel\\Horizon\\Http\\Controllers\\DashboardStatsController@index",
                        "controller": "Laravel\\Horizon\\Http\\Controllers\\DashboardStatsController@index",
                        "namespace": "Laravel\\Horizon\\Http\\Controllers",
                        "prefix": "horizon",
                        "where": []
                    },
                    "controller": {},
                    "defaults": [],
                    "wheres": [],
                    "parameters": [],
                    "parameterNames": [],
                    "computedMiddleware": [
                        "Laravel\\Horizon\\Http\\Middleware\\Authenticate"
                    ],
                    "compiled": {}
                },
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 551,
            "function": "dispatchToRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 176,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\Router",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 30,
            "function": "Illuminate\\Foundation\\Http\\{closure}",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/fideloper/proxy/src/TrustProxies.php",
            "line": 56,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Fideloper\\Proxy\\TrustProxies",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 30,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 30,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php",
            "line": 46,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 102,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 151,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 116,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/public/index.php",
            "line": 55,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/.composer/vendor/cpriego/valet-linux/server.php",
            "line": 197,
            "args": [
                "/home/laravel/Sites/laravel55/public/index.php"
            ],
            "function": "require"
        }
    ]
}

http://laravel55.dev/horizon/api/workload

{
    "message": "Parse error: syntax error, unexpected '='",
    "file": "/home/laravel/Sites/laravel55/vendor/laravel/horizon/src/Repositories/RedisWorkloadRepository.php",
    "line": 70,
    "trace": [
        {
            "file": "/home/laravel/Sites/laravel55/vendor/composer/ClassLoader.php",
            "line": 301,
            "function": "Composer\\Autoload\\includeFile",
            "args": [
                "/home/laravel/Sites/laravel55/vendor/laravel/horizon/src/Repositories/RedisWorkloadRepository.php"
            ]
        },
        {
            "function": "loadClass",
            "class": "Composer\\Autoload\\ClassLoader",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\Repositories\\RedisWorkloadRepository"
            ]
        },
        {
            "function": "spl_autoload_call",
            "args": [
                "Laravel\\Horizon\\Repositories\\RedisWorkloadRepository"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 752,
            "function": "__construct",
            "class": "ReflectionClass",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\Repositories\\RedisWorkloadRepository"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 631,
            "function": "build",
            "class": "Illuminate\\Container\\Container",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\Repositories\\RedisWorkloadRepository"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 586,
            "function": "resolve",
            "class": "Illuminate\\Container\\Container",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\Repositories\\RedisWorkloadRepository",
                []
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Application.php",
            "line": 721,
            "function": "make",
            "class": "Illuminate\\Container\\Container",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\Repositories\\RedisWorkloadRepository",
                []
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 256,
            "function": "make",
            "class": "Illuminate\\Foundation\\Application",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\Repositories\\RedisWorkloadRepository",
                []
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 749,
            "function": "Illuminate\\Container\\{closure}",
            "class": "Illuminate\\Container\\Container",
            "type": "->",
            "args": [
                {
                    "contextual": []
                },
                []
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 631,
            "function": "build",
            "class": "Illuminate\\Container\\Container",
            "type": "->",
            "args": [
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 586,
            "function": "resolve",
            "class": "Illuminate\\Container\\Container",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\Contracts\\WorkloadRepository",
                []
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Application.php",
            "line": 721,
            "function": "make",
            "class": "Illuminate\\Container\\Container",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\Contracts\\WorkloadRepository",
                []
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/RouteDependencyResolverTrait.php",
            "line": 79,
            "function": "make",
            "class": "Illuminate\\Foundation\\Application",
            "type": "->",
            "args": [
                "Laravel\\Horizon\\Contracts\\WorkloadRepository"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/RouteDependencyResolverTrait.php",
            "line": 45,
            "function": "transformDependency",
            "class": "Illuminate\\Routing\\ControllerDispatcher",
            "type": "->",
            "args": [
                {
                    "name": "workload"
                },
                []
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/RouteDependencyResolverTrait.php",
            "line": 27,
            "function": "resolveMethodDependencies",
            "class": "Illuminate\\Routing\\ControllerDispatcher",
            "type": "->",
            "args": [
                [],
                {
                    "name": "index",
                    "class": "Laravel\\Horizon\\Http\\Controllers\\WorkloadController"
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
            "line": 41,
            "function": "resolveClassMethodDependencies",
            "class": "Illuminate\\Routing\\ControllerDispatcher",
            "type": "->",
            "args": [
                [],
                {},
                "index"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 204,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\ControllerDispatcher",
            "type": "->",
            "args": [
                {
                    "uri": "horizon/api/workload",
                    "methods": [
                        "GET",
                        "HEAD"
                    ],
                    "action": {
                        "uses": "Laravel\\Horizon\\Http\\Controllers\\WorkloadController@index",
                        "controller": "Laravel\\Horizon\\Http\\Controllers\\WorkloadController@index",
                        "namespace": "Laravel\\Horizon\\Http\\Controllers",
                        "prefix": "horizon",
                        "where": []
                    },
                    "controller": {},
                    "defaults": [],
                    "wheres": [],
                    "parameters": [],
                    "parameterNames": [],
                    "computedMiddleware": [
                        "Laravel\\Horizon\\Http\\Middleware\\Authenticate"
                    ],
                    "compiled": {}
                },
                {},
                "index"
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 161,
            "function": "runController",
            "class": "Illuminate\\Routing\\Route",
            "type": "->",
            "args": []
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 612,
            "function": "run",
            "class": "Illuminate\\Routing\\Route",
            "type": "->",
            "args": []
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 30,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Router",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/horizon/src/Http/Middleware/Authenticate.php",
            "line": 18,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Laravel\\Horizon\\Http\\Middleware\\Authenticate",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 102,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 614,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 573,
            "function": "runRouteWithinStack",
            "class": "Illuminate\\Routing\\Router",
            "type": "->",
            "args": [
                {
                    "uri": "horizon/api/workload",
                    "methods": [
                        "GET",
                        "HEAD"
                    ],
                    "action": {
                        "uses": "Laravel\\Horizon\\Http\\Controllers\\WorkloadController@index",
                        "controller": "Laravel\\Horizon\\Http\\Controllers\\WorkloadController@index",
                        "namespace": "Laravel\\Horizon\\Http\\Controllers",
                        "prefix": "horizon",
                        "where": []
                    },
                    "controller": {},
                    "defaults": [],
                    "wheres": [],
                    "parameters": [],
                    "parameterNames": [],
                    "computedMiddleware": [
                        "Laravel\\Horizon\\Http\\Middleware\\Authenticate"
                    ],
                    "compiled": {}
                },
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 551,
            "function": "dispatchToRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 176,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\Router",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 30,
            "function": "Illuminate\\Foundation\\Http\\{closure}",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/fideloper/proxy/src/TrustProxies.php",
            "line": 56,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Fideloper\\Proxy\\TrustProxies",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 30,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 30,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php",
            "line": 46,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                },
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 102,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 151,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->",
            "args": [
                {}
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 116,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/Sites/laravel55/public/index.php",
            "line": 55,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->",
            "args": [
                {
                    "attributes": {},
                    "request": {},
                    "query": {},
                    "server": {},
                    "files": {},
                    "cookies": {},
                    "headers": {}
                }
            ]
        },
        {
            "file": "/home/laravel/.composer/vendor/cpriego/valet-linux/server.php",
            "line": 197,
            "args": [
                "/home/laravel/Sites/laravel55/public/index.php"
            ],
            "function": "require"
        }
    ]
}

Horizon cannot be started from outside of project directory

I've tried to run Horizon from Supervisor and I can access backend but supervisor-1 wasn't there and there were no available processes shown. Log says:

Horizon started successfully.
Could not open input file: artisan
Could not open input file: artisan
Could not open input file: artisan

The only difference I was able to track was the full path used in Supervisor command. So I've tried one level up and Horizon output for php website/artisan horizon looks the same as above.

I guess internally Horizon tries to run another command and assumes it's always started from inside project directory?

Uploading video to AWS

Hi, i'm currently near to deploy a big app with Laravel 5.5 but a little issue persist...

when I put QUEUE_DRIVER to sync, my uploading job works perfectly but when i put redis, for working with the 'art horizon' command, it tooks a while and after a lot of retries my job fail ...

this is my job :

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Storage;
use File;

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

    public $filename;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($filename)
    {
        $this->filename = $filename;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $file = storage_path() . '/uploads/' . $this->filename;
        if (Storage::disk('s3drop')->put($this->filename, fopen($file, 'r+'))) {
            File::delete($file);
        }
    }
}

Hope someone can tell me what's is going on thanks :/

cache:clear will wipe jobs

As discussed with @themsaid, the cache:clear command calls FLUSHDB, which will delete all Horizon data, or other application data stored in Redis.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.