Laravel Horizon 配置以及使用

导语

Horizon 为 Laravel 提供了基于 Redis 的、拥有美观后台的、代码驱动配置的队列系统。Horizon 让咱们能够轻松监控队列系统的关键指标,例如任务吞吐量、运行时间和失败任务等。

Laravel Horizon 是官方的扩展包,配置以及使用很简单,跟着文档就能够。php

安装以及配置

  1. composer require laravel/horizon
  2. 安装好以后,发布资源 php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"
  3. 配置文件在 config/horizon.php,能够根据需求修改

使用

  1. 运行 php artisan horizon
  2. 访问 you_site.com/horizon 就能够看到后台了
  3. 还有其余命令html

    1. 暂停 php artisan horizon:pause
    2. 继续 php artisan horizon:continue
    3. 执行完全部任务后退出 php artisan horizon:terminate

部署

能够看到使用很简单,在部署的时候要注意如下几点laravel

  1. 确保有 failed_jobs 数据表,相关文档能够看这里
  2. 默认状况下,只能在 local 访问,固然咱们能够自定义segmentfault

    1. 首先修改 config/horizon.phpenvironments 配置项。能够看到其中有 localproduction,将 production 修改成线上 .envAPP_ENV 的值
    2. 接下来能够自定义后台的访问策略,使用 Horizon:auth 方法,return true 便可访问,不然返回 403。在 app/Providers/AppServiceProvider.php 中修改以下
public function boot()
{
    Horizon::auth(function ($request) {
        // 这里进行判断,根据需求自行选择

        // 经过认证能够访问
        if (Auth::check()) {
            return true;
        }

        // 指定参数能够访问
        if ($request->input('q') == 'horizon') {
            return true;
        }

    });
}
  1. 使用 Supervisor 进程守护,配置以下,根据状况进行修改(能够参考这两篇文章,这里那里)
[program:horizon]
process_name=%(program_name)s
command=php /var/www/you_project_path/artisan horizon
autostart=true
autorestart=true
user=laradock
redirect_stderr=true
stdout_logfile=/var/www/you_project_path/horizon.log
  1. 使用调度任务来生成监控,以便查看运行状况,在 app/Console/Kernel.php 修改以下
protected function schedule(Schedule $schedule)
{
    // $schedule->command('inspire')
    //          ->hourly();
    $schedule->command('horizon:snapshot')->everyFiveMinutes();
}

结语

Laravel Horizon 还有标签以及通知的配置,感兴趣的能够查看文档。app


参考资料:官方扩展包 —— 队列系统解决方案:Laravel Horizoncomposer

相关文章
相关标签/搜索