每次加载页面时,我都会连接到数据库以获取存储基本应用程序设置的settings
表。它看起来很有用。我有一个想法,将$settings
数组临时存储在$ _SESSION变量中。因此,每次启动脚本时,它都会检查$ _SESSION ['settings']是否为空并仅在数据库中加载数据。
我的问题是:
1)这是正常的做法还是有严重的陷阱?
2)这会加快我的申请吗?
答案 0 :(得分:5)
看起来效率不高。
看起来还是效率低下?
我有一个想法是在$ _SESSION变量中临时存储$ settings数组。
这是错误的想法。会话用于个人数据,而不是站点范围的设置。如果您想从文件中读取设置 - 请包含它!
这会加快我的申请吗?
目前您的申请速度有问题吗?
答案 1 :(得分:1)
我不建议使用PHP的$_SESSION
作为本地缓存。对于访问您网站的每位访问者,您需要填充$_SESSION
变量。这是低效的,因为每个访问者将在他们不需要时进行会话。它也很难管理,因为settings
数据的更改不会立即填充到$_SESSION
变量中。为此,我建议使用memcached甚至apc本地对象缓存。
答案 2 :(得分:1)
我猜这种性能优势最多可以忽略不计,最坏的情况下可能有害。
无论哪种方式,$ _SESSION并非真正意图以这种方式使用,而是用于与特定用户相关的数据,并且作为一般规则,我尽量使其尽可能简洁。
您可能考虑的一个更好的解决方案是将设置本地缓存为PHP文件,编写一些内容以生成创建简单密钥的文件并不太难=>您可以包含的数据库中的value数组。 e.g。
<?php
// myconfig.php
return array(
'mysetting' => 'value',
);
然后您可以只包含此文件以获取配置值:
<?php
// app.php
$config = include('myconfig.php');
echo $config['mysetting']; // 'value'