配置队列

config/queue.php 大概长这个样子,有几种队列可以选择,这里直接去 .env 文件中修改 QUEUE_CONNECTION = redis

  1. <?php
  2. return [
  3. 'default' => env('QUEUE_CONNECTION', 'sync'),
  4. 'connections' => [
  5. 'sync' => [
  6. 'driver' => 'sync',
  7. ],
  8. 'database' => [
  9. 'driver' => 'database',
  10. 'table' => 'jobs',
  11. 'queue' => 'default',
  12. 'retry_after' => 90,
  13. ],
  14. 'beanstalkd' => [
  15. 'driver' => 'beanstalkd',
  16. 'host' => 'localhost',
  17. 'queue' => 'default',
  18. 'retry_after' => 90,
  19. 'block_for' => 0,
  20. ],
  21. 'sqs' => [
  22. 'driver' => 'sqs',
  23. 'key' => env('AWS_ACCESS_KEY_ID'),
  24. 'secret' => env('AWS_SECRET_ACCESS_KEY'),
  25. 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
  26. 'queue' => env('SQS_QUEUE', 'your-queue-name'),
  27. 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
  28. ],
  29. 'redis' => [
  30. 'driver' => 'redis',
  31. 'connection' => 'default',
  32. 'queue' => env('REDIS_QUEUE', 'default'),
  33. 'retry_after' => 90,
  34. 'block_for' => null,
  35. ],
  36. ],
  37. 'failed' => [
  38. 'database' => env('DB_CONNECTION', 'mysql'),
  39. 'table' => 'failed_jobs',
  40. ],
  41. ];

配置 Redis

config/database.php 中 redis 的配置如下:

'redis' => [

    'client' => env('REDIS_CLIENT', 'predis'),

    'options' => [
        'cluster' => env('REDIS_CLUSTER', 'predis'),
        'prefix'  => Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_',
    ],

    'default' => [
        'host'     => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port'     => env('REDIS_PORT', 6379),
        'database' => env('REDIS_DB', 0),
    ],

    'cache' => [
        'host'     => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port'     => env('REDIS_PORT', 6379),
        'database' => env('REDIS_CACHE_DB', 1),
    ],

],

安装依赖

使用 Redis 需要安装:

composer require predis/predis

生成任务类

php artisan make:job ProcessPodcast

TODO