Laravel队列作业将自动处理,而无需任何queue:work或listen命令

时间:2018-09-24 20:00:20

标签: laravel queue scheduling

我正在排队等待作业从我的控制器运行1分钟,并且作业正确显示在“作业”表中,但是根据doc,我必须运行php artisan queue:work以执行作业,但就我而言,它们正在执行在Ubuntu服务器(AWS ec2)上没有任何命令。同样,这样的作业也会进入失败的作业表,因为它们正在读取我之前更改的控制器的一些旧代码。 注意:如果我运行php artisan queue: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

2 个答案:

答案 0 :(得分:0)

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

QUEUE_CONNECTION=database

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

答案 1 :(得分:0)

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