【问题标题】:Laravel Queue Jobs are automatically processing without any queue:work or listen commandLaravel 队列作业会自动处理,无需任何 queue:work 或 listen 命令
【发布时间】:2019-02-28 09:22:37
【问题描述】:

我正在排队等待从我的控制器运行 1 分钟后运行的作业,并且作业正确显示在“作业”表中,但根据文档,我必须运行 php artisan queue:work 才能执行作业,但在我的情况下它们正在执行在 Ubuntu 服务器(AWS ec2)上没有任何命令。这些作业也会进入失败的作业表,因为它们正在读取我之前更改的一些旧控制器代码。 注意:如果我运行 php artisan queue:work,那么一些作业由它处理并使用新代码执行而不会产生任何错误,而某些作业由该未知后台进程执行并产生旧代码错误

php arisan 列表的结果 "root@ip-172-31-30-76:/var/www/html# php 工匠列表 Laravel 框架 5.5.32 用法: 命令 [选项] [参数] 选项: -h, --help 显示此帮助信息 -q, --quiet 不输出任何消息 -V, --version 显示此应用程序版本 --ansi 强制 ANSI 输出 --no-ansi 禁用 ANSI 输出 -n, --no-interaction 不问任何交互式问题 --env[=ENV] 命令应该运行的环境 -v|vv|vvv, --verbose 增加消息的详细程度:1 表示正常输出,2 表示更详细的输出,3 表示调试 可用命令: clear-compiled 移除已编译的类文件 将应用程序置于维护模式 env 显示当前框架环境 help 显示命令的帮助 list 列出命令 migrate 运行数据库迁移 optimize 优化框架以获得更好的性能(已弃用) 为应用程序交换前端脚手架 在 PHP 开发服务器上服务应用程序 修补与您的应用程序交互 up 使应用程序退出维护模式 应用程序 app:name 设置应用命名空间 授权 auth:clear-resets 刷新过期的密码重置令牌 缓存 cache:clear 刷新应用缓存 cache:forget 从缓存中删除一个项目 cache:table 为缓存数据库表创建迁移 配置 config:cache 创建缓存文件以加快配置加载 config:clear 删除配置缓存文件 定制解决方案 customSolutions:sportsplus 此命令用于执行自定义解决方案 数据表 datatables:make 创建一个新的 DataTable 服务类。 datatables:scope 创建一个新的 DataTable Scope 类。 D b db:seed 用记录播种数据库 委托 entrust:migration 按照 Entrust 规范创建迁移。 事件 event:generate 根据注册生成缺失的事件和监听器 进口 import:SyncOrders 从不同渠道导入订单 钥匙 key:generate 设置应用程序密钥 制作 make:auth Scaffold 基本登录和注册视图和路由 make:command 创建一个新的 Artisan 命令 make:controller 创建一个新的控制器类 make:event 创建一个新的事件类 make:exception 创建一个新的自定义异常类 make:factory 创建一个新的模型工厂 make:job 创建一个新的工作类 make:listener 创建一个新的事件监听器类 make:mail 创建一个新的电子邮件类 make:middleware 创建一个新的中间件类 make:migration 创建一个新的迁移文件 make:model 创建一个新的 Eloquent 模型类 make:notification 创建一个新的通知类 make:policy 创建一个新的策略类 make:provider 创建一个新的服务提供者类 make:request 创建一个新的表单请求类 make:resource 创建一个新资源 make:rule 创建一个新的验证规则 make:seeder 创建一个新的播种器类 make:test 创建一个新的测试类 迁移 migrate:fresh 删除所有表并重新运行所有迁移 migrate:install 创建迁移仓库 migrate:refresh 重置并重新运行所有迁移 migrate:reset 回滚所有数据库迁移 migrate:rollback 回滚上次的数据库迁移 migrate:status 显示每次迁移的状态 通知 Notifications:table 为通知表创建迁移 包裹 package:discover 重建缓存的包清单 队列 queue:failed 列出所有失败的队列作业 queue:failed-table 为失败的队列作业数据库表创建迁移 queue:flush 刷新所有失败的队列作业 queue:forget 删除失败的队列作业 queue:listen 监听给定队列 queue:restart 在当前工作后重新启动队列工作守护进程 queue:retry 重试失败的队列作业 queue:table 为队列作业数据库表创建迁移 queue:work 作为守护进程开始处理队列中的作业 路线 route:cache 创建路由缓存文件以便更快地注册路由 route:clear 删除路由缓存文件 route:list 列出所有注册的路由 日程 schedule:run 运行预定的命令 会议 session:table 为会话数据库表创建迁移 贮存 storage:link 创建从“public/storage”到“storage/app/public”的符号链接 小贩 vendor:publish 从供应商包中发布任何可发布的资产 看法 view:clear 清除所有编译的视图文件 " cront -l 的结果 * * * * * php /var/www/html/artisan schedule:run >> /var/www/html/logs.txt 2>&1

【问题讨论】:

  • 你能显示php artisan list的结果吗
  • 服务器上crontab -l的结果是什么?
  • 队列驱动是“数据库”
  • 你的config/queue.php是什么样的?
  • @Daniyal,我通过使用另一个自定义队列而不是默认队列来解决它。例如,将它们放在“订单”队列中,然后必须运行命令 php artisan queue:work --queue=orders --tries=2

标签: laravel queue scheduling


【解决方案1】:

我遇到了同样的问题,我通过重新启动 Redis 解决了这个问题。
寻求帮助的命令。
sudo systemctl stop redis
sudo systemctl start redis

【讨论】:

    【解决方案2】:

    如果您的队列连接仍设置为默认值 (sync),就会发生这种情况。如果您使用的是 Laravel 5.7 或更高版本,请检查您的 .env 文件并确保您拥有以下内容:

    QUEUE_CONNECTION=database
    

    请注意,在 Laravel 5.7 中,QUEUE_DRIVER 已更改为 QUEUE_CONNECTIONhttps://laravel.com/docs/5.7/upgrade

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 2016-03-15
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多