PHP - 如何在会话之间共享配置数据

时间:2011-07-04 10:35:29

标签: php global-variables

我有一个PHP主机群集,提供一个小的PHP脚本。该脚本从脚本开头的数据库中检索键/值对的数组,即配置值。

我想避免从每个请求的数据库中检索这些配置数据,以便进行优化。

我的想法是脚本仅为第一个请求加载数据库中的数据,并将这些变量存储到某种在所有会话中持久存在的共享内存中。

我曾尝试使用PHP全局变量,但它们都在脚本末尾被销毁了...... 此外,我想避免使用配置文件,因为正如我所说,我有多个主机为脚本提供服务,我想集中存储数据。

4 个答案:

答案 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