gpt4 book ai didi

php - SncRedisBundle (predis)-heroku : how to configure the DSN

转载 作者:IT王子 更新时间:2023-10-29 06:07:32 30 4
gpt4 key购买 nike

我在本地成功使用 SncRedisBundle,但无法使用 heroku。这是我的配置:

#config.yml

imports:
- { resource: heroku/parameters_heroku.php } #heroku cloud provider configuration's

snc_redis:
clients:
default:
type: predis
alias: default
dsn: "%redis_url%"
cache:
type: predis
alias: cache
dsn: "%redis_url%&database=1"
logging: false
session:
type: predis
alias: session
dsn: "%redis_url%&database=2"
task:
type: predis
alias: task
dsn: "%redis_url%&database=3"
doctrine:
type: predis
alias: doctrine
dsn: "%redis_url%&database=4"
session:
client: session
ttl: 10800 #le session expirera apres 3 heures
doctrine:
metadata_cache:
client: doctrine
entity_manager: default # the name of your entity_manager connection
document_manager: default # the name of your document_manager connection
result_cache:
client: doctrine
entity_manager: [default] # you may specify multiple entity_managers
query_cache:
client: doctrine
entity_manager: default
second_level_cache:
client: doctrine
entity_manager: default
monolog:
client: cache
key: monolog
swiftmailer:
client: default
key: swiftmailer

#heroku/parameters_heroku.php
<?php
$is_heroku = getenv("IS_HEROKU");//manually added : heroku config:set IS_HEROKU=1


if (!$is_heroku) {
return;
}

if ($redisUrl = getenv('REDIS_URL')) {
$aParsedRedisUrl = parse_url($redisUrl);
$redisConstructedDsn = 'redis://'.$aParsedRedisUrl['host'].':'.$aParsedRedisUrl['port'].$aParsedRedisUrl['path'].'?'.'password='.$aParsedRedisUrl['pass'].($aParsedRedisUrl['query'] ? '&'.$aParsedRedisUrl['query'] : ''); // le user ne sert pas : .'&user='.$aParsedRedisUrl['user']
$container->setParameter('redis_url', $redisConstructedDsn);
}

如果我在 heroku 构建过程中转储 $redisConstructedDsn,我会得到类似的东西:redis://xxxxxx.compute-1.amazonaws.com:18839?password= foob​​ar,因此,它似乎与 predis doc 非常兼容但是 Composer 构造失败了

remote: [Predis\Response\ServerException] remote:
NOAUTH Authentication required.

我找不到我做错了什么

最佳答案

问题解决了:最初我使用了这种语法:dsn: "%redis_url%/3" 与 heroku 不兼容。当我将其更改为可接受的格式时:"%redis_url%?database=3",我在其他地方添加了错误,所以这里是 heroku/parameters_heroku.php 中的简单更正

if ($redisUrl = getenv('REDIS_URL')) {
$container->setParameter('redis_url', $redisUrl);
}

互联网上的一些资源会说 predis 与 heroku 的格式不兼容,但它们是旧的&错误的;)

关于php - SncRedisBundle (predis)-heroku : how to configure the DSN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41587686/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com