Laravel Horizon 配置以及使用

導語

Horizon 爲 Laravel 提供了基於 Redis 的、擁有美觀後臺的、代碼驅動配置的隊列系統。Horizon 讓我們可以輕鬆監控隊列系統的關鍵指標,例如任務吞吐量、運行時間和失敗任務等。

Laravel Horizon 是官方的擴展包,配置以及使用很簡單,跟着文檔就可以。

安裝以及配置

  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. 還有其他命令

    1. 暫停 php artisan horizon:pause
    2. 繼續 php artisan horizon:continue
    3. 執行完所有任務後退出 php artisan horizon:terminate

部署

可以看到使用很簡單,在部署的時候要注意以下幾點

  1. 確保有 failed_jobs 數據表,相關文檔可以看這裏
  2. 默認情況下,只能在 local 訪問,當然我們可以自定義

    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 還有標籤以及通知的配置,感興趣的可以查看文檔。


參考資料:官方擴展包 —— 隊列系統解決方案:Laravel Horizon

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章