Laravel 队列作业自动处理,无需任何队列 :work or listen command

标签 laravel queue scheduling

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


Result of php arisan list
"root@ip-172-31-30-76:/var/www/html# php artisan list
Laravel Framework 5.5.32

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
      --env[=ENV]       The environment the command should run under
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  clear-compiled              Remove the compiled class file
  down                        Put the application into maintenance mode
  env                         Display the current framework environment
  help                        Displays help for a command
  list                        Lists commands
  migrate                     Run the database migrations
  optimize                    Optimize the framework for better performance (deprecated)
  preset                      Swap the front-end scaffolding for the application
  serve                       Serve the application on the PHP development server
  tinker                      Interact with your application
  up                          Bring the application out of maintenance mode
 app
  app:name                    Set the application namespace
 auth
  auth:clear-resets           Flush expired password reset tokens
 cache
  cache:clear                 Flush the application cache
  cache:forget                Remove an item from the cache
  cache:table                 Create a migration for the cache database table
 config
  config:cache                Create a cache file for faster configuration loading
  config:clear                Remove the configuration cache file
 customSolutions
  customSolutions:sportsplus  This command is for executing custom solutions
 datatables
  datatables:make             Create a new DataTable service class.
  datatables:scope            Create a new DataTable Scope class.
 db
  db:seed                     Seed the database with records
 entrust
  entrust:migration           Creates a migration following the Entrust specifications.
 event
  event:generate              Generate the missing events and listeners based on registration
 import
  import:SyncOrders           This imports orders from different channels
 key
  key:generate                Set the application key
 make
  make:auth                   Scaffold basic login and registration views and routes
  make:command                Create a new Artisan command
  make:controller             Create a new controller class
  make:event                  Create a new event class
  make:exception              Create a new custom exception class
  make:factory                Create a new model factory
  make:job                    Create a new job class
  make:listener               Create a new event listener class
  make:mail                   Create a new email class
  make:middleware             Create a new middleware class
  make:migration              Create a new migration file
  make:model                  Create a new Eloquent model class
  make:notification           Create a new notification class
  make:policy                 Create a new policy class
  make:provider               Create a new service provider class
  make:request                Create a new form request class
  make:resource               Create a new resource
  make:rule                   Create a new validation rule
  make:seeder                 Create a new seeder class
  make:test                   Create a new test class
 migrate
  migrate:fresh               Drop all tables and re-run all migrations
  migrate:install             Create the migration repository
  migrate:refresh             Reset and re-run all migrations
  migrate:reset               Rollback all database migrations
  migrate:rollback            Rollback the last database migration
  migrate:status              Show the status of each migration
 notifications
  notifications:table         Create a migration for the notifications table
 package
  package:discover            Rebuild the cached package manifest
 queue
  queue:failed                List all of the failed queue jobs
  queue:failed-table          Create a migration for the failed queue jobs database table
  queue:flush                 Flush all of the failed queue jobs
  queue:forget                Delete a failed queue job
  queue:listen                Listen to a given queue
  queue:restart               Restart queue worker daemons after their current job
  queue:retry                 Retry a failed queue job
  queue:table                 Create a migration for the queue jobs database table
  queue:work                  Start processing jobs on the queue as a daemon
 route
  route:cache                 Create a route cache file for faster route registration
  route:clear                 Remove the route cache file
  route:list                  List all registered routes
 schedule
  schedule:run                Run the scheduled commands
 session
  session:table               Create a migration for the session database table
 storage
  storage:link                Create a symbolic link from "public/storage" to "storage/app/public"
 vendor
  vendor:publish              Publish any publishable assets from vendor packages
 view
  view:clear                  Clear all compiled view files
"
Result of cront -l

* * * * * php /var/www/html/artisan schedule:run >> /var/www/html/logs.txt 2>&1

最佳答案

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

QUEUE_CONNECTION=database

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

关于Laravel 队列作业自动处理,无需任何队列 :work or listen command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52486539/

相关文章:

php - Laravel 5.2 左连接一对多的行与最高值的列

python - 从线程队列中获取所有项目

java - 从 7 :45 to 17:15 每 30 分钟使用 quartz 进行调度

PHP 5.5.16 isset 或 empty 中的非法偏移类型

php - 在 Laravel 中使用 Mailgun 个性化批量发送电子邮件

c# - 队列有时会损坏

java - 剩余时间最短优先 : Java Multithreading

algorithm - 如何安排任务

php - 属于 Laravel 5 中的数据透视表

java - 队列中的 2 路通知