Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5.2多项目使用redis上的队列,如果作业失败,记录将遍历数据库_Laravel_Redis_Queue_Supervisord - Fatal编程技术网

Laravel 5.2多项目使用redis上的队列,如果作业失败,记录将遍历数据库

Laravel 5.2多项目使用redis上的队列,如果作业失败,记录将遍历数据库,laravel,redis,queue,supervisord,Laravel,Redis,Queue,Supervisord,我有两个项目在同一台服务器上(Ubuntu 16.04),有不同的数据库、用户名和不同的用户密码。 但如果一个项目的队列失败,它可能会插入到B项目的失败作业表中。 是的,这意味着有时它会将失败的记录插入正确的位置。 我用默认设置检查了Laravel配置。 我使用主管保持步行。 那么,有人有同样的问题和解决办法吗? 我在这里打开了一个关于github的问题 作者的回复。我通过以下两个步骤解决了问题: 1.更改config/cache.php 'prefix' => 'myProjectNam

我有两个项目在同一台服务器上(Ubuntu 16.04),有不同的数据库、用户名和不同的用户密码。 但如果一个项目的队列失败,它可能会插入到B项目的失败作业表中。 是的,这意味着有时它会将失败的记录插入正确的位置。 我用默认设置检查了Laravel配置。 我使用主管保持步行。 那么,有人有同样的问题和解决办法吗?
我在这里打开了一个关于github的问题

作者的回复。我通过以下两个步骤解决了问题:

1.更改config/cache.php

'prefix' => 'myProjectName', //the default value is laravel.
2.更改config/database.php

 'redis' => [

    'cluster' => false,

    'default' => [
        'host'     => env('REDIS_HOST', 'localhost'),
        'password' => env('REDIS_PASSWORD', null),
        'port'     => env('REDIS_PORT', 6379),
        'database' => 2,                  //the default is 0
    ],

],
如果您的队列可能有60秒以上的时间来完成作业,您还应该注意config/queue.php

'redis' => [
        'driver'     => 'redis',
        'connection' => 'default',
        'queue'      => 'default',
        'expire'     => 120,        //the default is 60, and would be your like.
    ],

如果要通过为redis连接指定前缀而不是使用不同的数据库来解决冲突,可以使用以下配置

对于predis(默认客户端)

对于phpredis客户端(从Laravel 5.3开始提供):


“多个项目”是指两个或多个独立的Laravel应用程序部署到各自的文件夹中?当然可以。其中两个位于单独的文件夹中,如,并通过使用composer创建。如:composer创建项目--首选dist laravel/laravel A-project和composer创建项目--首选dist laravel/laravel B-project要澄清,第1点不会对队列产生建议的影响。前缀仅添加到缓存密钥,前缀不添加到队列使用的密钥。正是第2点(更改每个laravel应用程序使用的数据库)为您解决了冲突。不幸的是,Redis的创建者强烈建议不要使用“数据库”功能,并表示这是他最糟糕的想法:您能详细说明并指向文档吗?从我在这里的Laravel源代码中看到的情况来看,您作为配置数组传递的那些值没有被使用:@Ryan php redis前缀在Laravel文档中有文档记录,其中声明“PhpRedis支持以下附加连接参数:persistent、prefix、read_timeout和timeout。”,前缀是此处记录的客户端选项的一部分,虽然没有记录在Laravel文档中,但可以在Laravel中设置为Redis配置的一部分,如上面的示例所示。
'redis' => [
        'client' => 'predis',
        'cluster' => false,
        'options'=>[
            'prefix' => 'YOUR_PREFIX_HERE'
        ],
        'default' => [
            'host'     => env('REDIS_HOST', 'localhost'),
            'password' => env('REDIS_PASSWORD', null),
            'port'     => env('REDIS_PORT', 6379),
            'database' => 0,
        ],
    ],
'redis' => [
    'cluster' => false,
    'client'  => 'phpredis',
    'default' => [
        'host'     => env('REDIS_HOST', 'localhost'),
        'password' => env('REDIS_PASSWORD', null),
        'port'     => env('REDIS_PORT', 6379),
        'database' => 0,
        'prefix'   => 'YOUR_PREFIX_HERE:',
    ],
],