参考资料

  1. Fresns 核心安装要求汇总
  2. Fresns 对 PHP 超时限制有明确要求,主要是为了避免插件依赖下载超时
  3. Fresns 配合 Octane 和 Swoole,同样能让应用常驻内存,性能提升十倍以上
  4. Fresns 的队列,它的核心是按需配置,并非安装必选项
  5. Fresns 的 .env 文件是安装成功后才会在根目录自动生成
  6. Fresns PHP函数 官方要求
  7. Fresns 在宝塔面板下的目录所有权,通常需要设为 www 用户和 www 用户组
  8. 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/