- 需求
向App所有用户推送消息,推送接口由Java提供,PHP需要实现的是取到所有用户(目前是几万)并推送。 - 思路
使用Laravel队列异步处理,每次取100个用户进行推送,直至完成。 - 实现
创建队列,处理逻辑… - 调试
- 启动队列(
php artisan queue:work),查看日志
- 第10页之后没有日志输出,控制台队列进程被强杀了
- 分析
- 内存不足,参考https://learnku.com/laravel/t/24369
使用memory_get_usage获取内存使用,20M以下,Laravel队列默认分配128M,排除此原因 - 队列超时,参考https://stackoverflow.com/questions/25877752/laravel-queue-process-timeout-error
需要注意:queue:work被kill如上图没有错误信息,使用queue:listen会有
正确的姿势:php artisan queue:work --timeout=0

