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