`
xieye
  • 浏览: 835159 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

laravel5配置horizon队列控制面板

    博客分类:
  • PHP
阅读更多
原创文章,转载注明出处。

horizon是laravel的官方的队列控制面板。

安装时的要点是:


1126补充。
laravel系统刚composer安装完成后,config中带有一个queue.php
安装horizon 时,必须先确保 queue.php
里的 connections.redis.connection,默认是default。
得对应 database.php 里的 redis.下面的键。

所以,可以在database.php里 加上 自己命名的键。
同时 在 queue.php里 设置这个自己命名的键。

composer require laravel/horizon ,这一步仅仅vendor目录修改。
php artisan horizon:install,此命令影响如下:

modified:   config/app.php

Untracked files:
  (use "git add <file>..." to include in what will be committed)

app/Providers/HorizonServiceProvider.php
config/horizon.php
public/vendor/

其中,app.php修改了providers 键,多了一行。
App\Providers\HorizonServiceProvider::class
另外加一个配置文件horizon.php,加一个服务提供者HorizonServiceProvider.php
加public/vendor目录,是静态页面。。

==========================================================================
==========================================================================

创建队列任务。
php artisan make:job JobTest
修改此类。
public function handle()
    {
        //
        logger(time());
        logger(11);
        //echo 12;

    }


修改
route/web.php

Route::get('/', function () {

    \App\Jobs\JobTest::dispatch()->onQueue('default');

    return '加入队列成功';
});


==========================================================================
最好在生产服务器上也使用
php artisan horizon:install 这个命令。
原因是他居然在public下会生成文件。而一般的laravel插件不会这么做。
很容易忘记拷贝从本地。

注意:
supervisord的配置文件里,
user配置必须是真实的用户。

修改app/Provides/HorizonServiceProvider.php:
<?php

namespace App\Providers;

use Laravel\Horizon\Horizon;
use Illuminate\Support\Facades\Gate;
use Laravel\Horizon\HorizonApplicationServiceProvider;

class HorizonServiceProvider extends HorizonApplicationServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Horizon::auth(function ($request) {
            return true;

        });
    }


    /**
     * Register the Horizon gate.
     *
     * This gate determines who can access Horizon in non-local environments.
     *
     * @return void
     */
    protected function gate()
    {
        Gate::define('viewHorizon', function ($user) {
            return true ;
        });
    }

}




配置要点:
horizon的配置中,
'path' => 'admin/horizon',把这个面板的页面放到admin路径后。
然后在laravel-admin里,设置菜单,角色自己定义,路径horizon

然后为了安全起见,
horizon的配置文件里:
'middleware' => ['web','admin',],
这样的话,只有登录后台,才能看到面板。

继续这个配置文件,下面这个queue是在database.php配置的。
'use' => 'queue',

database.php
'redis' => [

        'client' => 'phpredis',

        'default' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,

            //'read_timeout' => 60,
        ],


        // 这是用于缓存的。
        'cache' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 1,
        ],

        // 这是用于队列的。
        'queue' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 2,
        ],

    ],
每个redis都有16个库,编号应该是从0到15
一定要分开来,不过就算不分的话,他好像是有前缀的,关系也不大,分最好。分的参数是那个database

继续:
下面那个supervisor,并不代表必须要使用supervisord。只要执行
php artisan horizon这个命令,都会生效。
processes这个参数,生成多少个进程。
queue这个参数重要,确定这个配置监听哪些队列。


'environments' => [
        'production' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'queue' => ['q1','qiye_weixin','email','log1','log2'],
                'balance' => 'false',
                'processes' => 3,
                'tries' => 3,
            ],
            'supervisor-2' => [
                'connection' => 'redis',
                'queue' => ['default',],
                'balance' => 'false',
                'processes' => 1,
                'tries' => 3,
            ],
        ],

        'local' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'queue' => ['default','q1','qiye_weixin','email','log1','log2'],
                'balance' => 'simple',
                'processes' => 3,
                'tries' => 3,
            ],
        ],
    ],


配置补充:
3个配置文件
database.php
queue.php
horizon.php
,其中,键名自己定义,下面只是实例,也可以不添加,只修改也行的。
示例如下:
其中,database.php里设置了多个redis连接。自己添加一个队列专用的。
'db_queue_redis' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => env('REDIS_DB', 0),
        ],


,把queued.php 的  添加
'queue_redis' => [
            'driver' => 'redis',
            'connection' => 'db_queue_redis',
            'queue' => 'default',
            'retry_after' => 90,
            'block_for' => null,
        ],
3,给 queue.php  的设置 default 键

'default' => 'queue_redis',

4、horizon.php
'environments' => [
        'production' => [
            'supervisor-1' => [
                'connection' => 'queue_redis',
                'queue' => ['default'],
                'balance' => 'simple',
                'processes' => 10,
                'tries' => 1,
            ],
        ],

        'local' => [
            'supervisor-1' => [
                'connection' => 'queue_redis',
                'queue' => ['default'],
                'balance' => 'simple',
                'processes' => 3,
                'tries' => 1,
            ],
        ],
    ],

5、关于 horizon.php 的 use指令,可以用默认 的default 连接。也可以自己修改。随意。






使用要点:

当使用horizon之后,就不需要再使用
php artisan queue:work 这个命令了。

而是改由
php artisan horizon 这个命令来消费队列。
当然,在生产环境中,肯定也不是直接使用这个命令,而是使用supervisord,反正也超简单的。

/etc/supervisord.d/horizon.ini:
[program:horizon]
process_name=%(program_name)s
command=php /应用目录/artisan horizon
autostart=true
autorestart=true
user=nginx //需根据实际情况修改
redirect_stderr=true
stdout_logfile=/应用目录/storage/logs/horizon.log 根据实际改




妈妈再也不用担心我没有好用的php队列了!
0
0
分享到:
评论

相关推荐

    Laravel开发-horizon

    配置队列驱动 在 `config/queue.php` 文件中,设置默认的队列驱动(例如 Redis 或数据库)。Horizon 支持多种队列驱动,选择最适合你的环境的。 ### 7. 处理失败的作业 Horizon 可以记录并处理失败的作业。在 `...

    Horizon为基于Laravel的Redis队列提供一个漂亮的仪表板和代码驱动配置

    5. **分组和命名空间**: Horizon支持队列的分组和命名,这使得在大型项目中管理多个队列变得更加有序,也便于识别和优化不同任务的性能。 接下来,我们讨论如何在项目中集成和配置Horizon: 1. **安装**: 通过...

    Laravel开发-laravel-async-queue

    在Laravel中,配置队列是在`config/queue.php`文件中完成的。这里定义了各种队列连接,包括数据库、Redis、SQS等。你可以根据项目需求选择合适的驱动,并配置相应的连接信息。 **创建任务** 要使用异步队列,首先...

    Laravel开发-laravel-worker-command

    总结起来,`laravel-worker-command`是Laravel 5中处理队列任务的核心部分,它允许开发者高效地处理后台任务,优化应用性能。通过理解和使用队列和Worker,你可以构建出更加健壮、响应迅速的Web应用。

    8_Horizon_控制面板服务1

    8.4.1 CLI方式启动一个云主机创建虚拟网络基于第7章,neutron中创建的是provider 网络,则本次需要创建一个公有网络。实例使用该网络,并通过L

    Laravel开发-laravel5-admin-api

    **Laravel 开发详解:构建 Laravel 5 Admin API**...在实践中,持续学习和了解Laravel的最新特性,如Laravel Sanctum(用于SPA的简单身份验证)和Laravel Horizon(队列监控)等,可以帮助你更好地利用这个强大的框架。

    Laravel开发-laravel-foundation

    Horizon是Laravel的队列监控系统,可以实时查看队列的工作状态,帮助优化和调试队列处理。 14. **Laravel Forge & Envoyer** Laravel Forge是一个自动化部署工具,Envoyer则用于零停机时间的部署策略。两者结合,...

    Laravel开发-monitor-rabbit-mq

    1. **Laravel Horizon**: Horizon 是 Laravel 的官方队列监控界面,它提供了详细的统计信息和实时仪表板。要安装 Horizon,运行: ``` composer require laravel/horizon php artisan horizon:install ``` 配置...

    Laravel开发-laravel-queue-manager

    8. **监控队列**:Laravel Horizon 是一个强大的队列监控工具,它提供实时队列监控,包括任务执行时间、失败率等信息。 9. **队列连接与通道**:通过配置多个队列连接,可以在不同的环境(例如开发和生产)使用不同...

    Laravel v5.5

    Laravel 5.5 是一个 LTS 版本,会提供为期 2 年的 bug 修复和为期 3 年的安全修复支持。...此外,Laravel 5.5 还恰巧碰上 Laravel Horizon 的发布,这是一个基于 Redis 的 Laravel 队列后台管理与配置系统。

    Laravel开发-laravel-amqp-queue

    为了更好地监控队列的运行情况,可以使用Laravel Horizon。Horizon提供了一个实时的仪表板,展示队列的工作状态、延迟和性能指标。安装Horizon后,通过`php artisan horizon`启动它,并在前端访问相应的URL以查看...

    laravel5.1.11

    Laravel 社区活跃,有丰富的第三方包可供使用,如 Laravel Socialite 用于社交登录,Laravel Scout 用于全文搜索,Laravel Horizon 用于队列监控等。 Laravel 5.1.11 的稳定性和广泛的社区支持使其成为 web 开发者...

    Laravel开发-lavanda

    **Laravel 开发详解 - lavanda 管理员控制面板** 在 Laravel 开发领域,lavanda 是一个专为 Laravel 应用程序设计的管理员控制面板。它提供了一个直观且功能丰富的界面,允许开发者和管理员高效地管理应用程序的...

    Laravel开发-workers

    此外,Laravel 的 Horizon 提供了队列监控工具,允许开发者实时查看队列状态、Worker 性能指标以及异常情况。Horizon 提供了一个简单的 Web 界面,便于管理和监控。 总结来说,Laravel Workers 是实现后台任务异步...

    VMware Horizon View 5.2配置手册

    5、VMware Horizon View 5.2 配置手册之五:View Composer 安装配置 6、VMware Horizon View 5.2 配置手册之六:连接服务器安装配置 7、VMware Horizon View 5.2 配置手册之七:View 环境配置 8、VMware Horizon ...

    Laravel开发-rabbitmq

    首先,安装 `laravel/horizon` 并配置 RabbitMQ 驱动,然后在浏览器中访问 `/horizon` 路径来查看队列的状态。 ### 7. 性能优化和故障恢复 为了确保高可用性和容错性,你可以配置 RabbitMQ 的集群,以及 Laravel ...

    Laravel开发-tasks

    Laravel Horizon是官方的队列监控解决方案,它提供了实时监控和管理队列的界面,帮助开发者跟踪任务的执行情况,优化性能。 9. **队列失败处理**: Laravel提供了对队列失败的优雅处理。当任务执行失败时,它可以...

    Laravel开发-laravel_framework

    Laravel 社区活跃,拥有丰富的第三方包,如 Laravel Socialite(社交登录)、Laravel Passport(OAuth2 服务器)、Laravel Horizon(队列监控)等,极大地扩展了框架的功能。 在 `laravel_framework-master` 文件中...

Global site tag (gtag.js) - Google Analytics