F3 框架:如何确保缓存正常工作?
Posted
技术标签:
【中文标题】F3 框架:如何确保缓存正常工作?【英文标题】:F3 Framework: how to make sure that caching is working correctly? 【发布时间】:2021-11-17 11:57:28 【问题描述】:我从 AWS Secrets Manager 获取数据库凭证并将其存储在缓存中,这样就不必在每次请求时都从 AWS 获取它。
问题是,如果我更改密码进行测试,F3 将无法连接到数据库。这意味着即使我告诉 F3 仅在它无法找到缓存的任何内容时检查它,它也会检测到秘密名称发生变化。
use Aws\SecretsManager\SecretsManagerClient;
$f3->set('CACHE', true);
if ($f3->exists('dbusername'))
$username = $f3->get('dbusername');
$password = $f3->get('dbpassword');
$host = $f3->get('dbhost');
$port = $f3->get('dbport');
else
$secretName = getenv('AWS_SECRET_NAME');
$client = new SecretsManagerClient([
'version' => 'latest'
]);
$secretManager = $client->getSecretValue([
'SecretId' => $secretName,
]);
$db = json_decode($secretManager['SecretString']);
$username = $db->username;
$password = $db->password;
$port = $db->port;
$host = $db->host;
$f3->set('dbusername', $username);
$f3->set('dbpassword', $password);
$f3->set('dbhost', $host);
$f3->set('dbport', $port);
我正在我的 PC 上进行测试,我不知道该代码是否可以在服务器上运行,不确定问题是来自我的 PC 还是我没有正确缓存。
【问题讨论】:
【参考方案1】:事实证明,除非指定 ttl(生存时间),否则缓存将无法工作。以下是如何将上述值缓存 24 小时。
$f3->set('dbusername', $username, 86400);
$f3->set('dbpassword', $password, 86400);
$f3->set('dbhost', $host, 86400);
$f3->set('dbport', $port, 86400);
【讨论】:
以上是关于F3 框架:如何确保缓存正常工作?的主要内容,如果未能解决你的问题,请参考以下文章