0

我一直在将作业添加到 Laravel 中的队列中,但它们仅在我被 ssh 连接到服务器并运行以下命令时才运行:

php artisan queue:listen --tries 1 --timeout=60

我需要队列不断运行,而不依赖于上面的命令行监听器。队列是通过redis运行的,目前我唯一的配置是:

config.php

 'queue' => 
  array (
    'default' => 'redis',
    'connections' => 
    array (
      'sync' => 
      array (
        'driver' => 'sync',
      ),
      'database' => 
      array (
        'driver' => 'database',
        'table' => 'laravel_jobs',
        'queue' => 'default',
        'expire' => 60,
      ),
      'beanstalkd' => 
      array (
        'driver' => 'beanstalkd',
        'host' => 'localhost',
        'queue' => 'default',
        'ttr' => 60,
      ),
      'sqs' => 
      array (
        'driver' => 'sqs',
        'key' => 'your-public-key',
        'secret' => 'your-secret-key',
        'queue' => 'your-queue-url',
        'region' => 'us-east-1',
      ),
      'iron' => 
      array (
        'driver' => 'iron',
        'host' => 'mq-aws-us-east-1.iron.io',
        'token' => 'your-token',
        'project' => 'your-project-id',
        'queue' => 'your-queue-name',
        'encrypt' => true,
      ),
      'redis' => 
      array (
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => 'default',
        'expire' => 60,
      ),
    ),
    'failed' => 
    array (
      'database' => 'mysql',
      'table' => 'laravel_failed_jobs',
    ),          
),

在我的 .env 文件中:

QUEUE_DRIVER=redis

我觉得我必须有一些配置不正确。

4

1 回答 1

0

我还没有尝试过,但我相信如果您使用 cron 运行此代码片段,那么问题将得到解决。

Artisan::call('queue:work')
于 2017-06-20T05:27:43.290 回答