Fresns 的队列与 Redis 配置,本质上就是让主程序知道“异步任务交给谁处理
参考资料
Fresns 的队列与 Redis 配置,本质上就是让主程序知道“异步任务交给谁处理
Fresns 的队列与 Redis 配置,本质上就是让主程序知道“异步任务交给谁处理”。以下是基于 Fresns 官方 queue.php 配置文件的详细说明。
📂 队列连接配置(.env 文件)
# 队列驱动:sync(默认,同步执行)/ redis / database QUEUE_CONNECTION=redis # Redis 连接信息 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # 若 Redis 未设密码则留空或填 null REDIS_PORT=6379 REDIS_DB=0 # Redis 数据库索引,0-15 REDIS_QUEUE=fresns # 队列名称,默认 "fresns"
如果使用 database 驱动,需要确保 failed_jobs 和 job_batches 表已通过迁移创建,这通常由 Fresns 安装过程自动完成。
🔧 队列连接详解
Fresns 的 config/queue.php 中定义了多种驱动,default 值取自 QUEUE_CONNECTION 环境变量,未设置时默认为 sync。
sync 同步队列:不产生任何异步效果,任务在请求生命周期内直接执行。适合开发调试或任务量极小的场景,无需额外配置。
redis 队列:推荐的生产环境选择。任务被推入 Redis 列表,需要额外的 worker 进程消费。核心参数 retry_after 默认 90 秒,表示任务在 90 秒后被重新放回队列等待重试。
database 队列:任务存储在数据库表中。无需额外服务,但吞吐量低于 Redis,适合中小规模场景。
⚙️ 队列进程守护(宝塔环境)
仅配置 .env 还不够,必须有常驻进程来消费队列。宝塔面板可通过 进程守护管理器 或 Supervisor 实现。
在宝塔软件商店安装“进程守护管理器”,添加守护进程:
启动用户:
www运行目录:Fresns 主程序根目录(含
artisan文件)启动命令:
php artisan queue:work --queue=fresns --tries=3 --daemon
--tries=3 表示任务失败前最多尝试 3 次,--daemon 让进程常驻内存运行以提高性能。
💡 关键注意事项
PHP 函数依赖:使用 Redis 异步队列时,必须保留 pcntl_signal、pcntl_alarm、pcntl_async_signals 三个函数。若使用默认 sync 队列或完全不配置队列,这三个函数可以禁用。
多站点隔离:同一服务器部署多个 Fresns 实例时,应修改 REDIS_QUEUE 名称或使用不同的 REDIS_DB 索引,避免队列数据混淆。
修改后清缓存:调整 .env 后,删除 bootstrap/cache/config.php 或执行 php artisan config:clear 使配置生效。
时间:2026-10-01 16:40:39
来源:https://fresns.ciilii.com/
