導語
Horizon 爲 Laravel 提供了基於 Redis 的、擁有美觀後臺的、代碼驅動配置的隊列系統。Horizon 讓我們可以輕鬆監控隊列系統的關鍵指標,例如任務吞吐量、運行時間和失敗任務等。
Laravel Horizon 是官方的擴展包,配置以及使用很簡單,跟着文檔就可以。
安裝以及配置
composer require laravel/horizon
- 安裝好之後,發佈資源
php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"
- 配置文件在
config/horizon.php
,可以根據需求修改
使用
- 運行
php artisan horizon
- 訪問
you_site.com/horizon
就可以看到後臺了 -
還有其他命令
- 暫停
php artisan horizon:pause
- 繼續
php artisan horizon:continue
- 執行完所有任務後退出
php artisan horizon:terminate
- 暫停
部署
可以看到使用很簡單,在部署的時候要注意以下幾點
- 確保有
failed_jobs
數據表,相關文檔可以看這裏 -
默認情況下,只能在
local
訪問,當然我們可以自定義- 首先修改
config/horizon.php
中environments
配置項。可以看到其中有local
和production
,將production
修改爲線上.env
中APP_ENV
的值 - 接下來可以自定義後臺的訪問策略,使用
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;
}
});
}
[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
- 使用調度任務來生成監控,以便查看運行情況,在
app/Console/Kernel.php
修改如下
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
$schedule->command('horizon:snapshot')->everyFiveMinutes();
}
結語
Laravel Horizon 還有標籤以及通知的配置,感興趣的可以查看文檔。