Laravel队列进程被kill的问题分析

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

十七度的邮件通知有类似的需求,我用Redis做的队列,写个死循环每次pop一条,感觉还行,还没遇见什么问题。

请登录后发表评论