我有一个PHP主机群集,提供一个小的PHP脚本。该脚本从脚本开头的数据库中检索键/值对的数组,即配置值。
我想避免从每个请求的数据库中检索这些配置数据,以便进行优化。
我的想法是脚本仅为第一个请求加载数据库中的数据,并将这些变量存储到某种在所有会话中持久存在的共享内存中。
我曾尝试使用PHP全局变量,但它们都在脚本末尾被销毁了...... 此外,我想避免使用配置文件,因为正如我所说,我有多个主机为脚本提供服务,我想集中存储数据。
答案 0 :(得分:3)
当我需要跨脚本存储少量数据时,我通常使用apc
apc_add('config', array('a' => 'b'));
$config = apc_fetch('config');
答案 1 :(得分:1)
......在会议中
而是暗示您已经在使用会话 - 那么为什么不使用自定义会话处理程序呢?
使用会话ID加载会话数据,并重载配置。您可以选择将其设置为可以调用read方法,只返回配置数据而不搜索常规会话数据。
执行此操作的最有效方法可能是运行守护程序 - 这样您就可以将配置数据保存在PHP变量中。有一个很好的单线程服务器实现here。
答案 2 :(得分:0)
您可以将其保留为: -
$_SESSION['_config_data']['index_1'] = 'value_1';
$_SESSION['_config_data']['index_2'] = 'value_2';
$_SESSION['_config_data']['index_3'] = 'value_3';
...
通过这种方式,您将获得存储在会话变量“$_SESSION['_config_data']
”中的所有配置数据。
但是你需要在设置方法的开始时检查会话变量“$_SESSION['_config_data']
”是否存在一些预先填充的数据。如果是,则不需要为每个页面请求设置配置数据。
希望它有所帮助。
答案 3 :(得分:0)
答案是memcached:http://memcached.org/
这是一种针对这种情况的东西,有很多很好的教程,但官方的php文档是一个很好的起点:http://php.net/manual/en/book.memcache.php