首先选择合适的队列驱动如redis或rabbitmq,再在laravel中通过artisan命令创建任务类并编写逻辑,使用dispatch推送任务,最后用supervisor守护php artisan queue:work进程持续消费,确保异步执行稳定可靠。

php框架使用队列系统,核心是把耗时任务从主流程剥离,交给后台进程异步执行。主流框架如Laravel、thinkphp都内置了队列支持,结合redis或RabbitMQ等驱动,能轻松实现邮件发送、数据处理等异步操作。关键是配置好驱动、定义任务类,并确保监听进程持续运行。
选择合适的队列驱动
队列的性能和可靠性取决于底层驱动。PHP框架通常支持多种驱动,应根据场景选择:
• Redis:基于内存,速度快,适合高并发、对延迟敏感的任务,如实时通知、缓存更新。需确保PHP redis扩展已安装。 • RabbitMQ:功能强大,支持复杂的路由和消息确认机制,适合对消息可靠性要求极高的场景,如订单处理、支付回调。 • sync(同步):开发或测试环境可用,任务会立即在当前请求中执行,不真正实现异步,上线后应切换。
定义并推送异步任务
将需要异步执行的逻辑封装成任务类,然后推送到队列中等待消费。
• 在Laravel中,使用php artisan make:job SendEmailJob生成任务类,在handle()方法里编写发送邮件的逻辑。 • 在控制器中,引入任务类并调用dispatch(new SendEmailJob($data))即可将任务入队,请求会立刻返回,不影响页面响应速度。 • ThinkPHP可通过Queue::push()方法推送任务,同样需要事先定义好处理业务的任务类。
启动监听进程消费任务
任务推入队列后,必须有持续运行的进程去“监听”并执行它们,否则任务会一直积压。
立即学习“PHP免费学习笔记(深入)”;
• Laravel使用php artisan queue:work命令启动单个worker进程处理任务。 • ThinkPHP使用php think queue:listen命令持续监听队列变化。 • 这些命令不能在前台手动运行,必须用supervisor等进程管理工具守护,防止意外退出导致任务停滞。 基本上就这些。只要选好驱动、写好任务、保持监听,队列就能稳定工作。不复杂但容易忽略。


