Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-如何在会话之间共享配置数据_Php_Global Variables - Fatal编程技术网

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

PHP-如何在会话之间共享配置数据,php,global-variables,Php,Global Variables,我有一个PHP主机集群,服务于一个小的PHP脚本。脚本在脚本开始时从数据库检索一组键/值对,这些键/值对是配置值 我希望避免为每个请求从数据库中检索这些配置数据,以便进行优化 我的想法是,脚本只为第一个请求从数据库加载数据,并将这些变量存储到某种共享内存中,这种共享内存在所有会话中都是持久的 我曾尝试使用PHP全局变量,但在脚本末尾它们都被销毁了。。。 另外,我希望避免使用配置文件,因为正如我所说,我有多个主机为脚本提供服务,并且我希望集中存储数据。您可以将其保留为:- $_SESSION['_

我有一个PHP主机集群,服务于一个小的PHP脚本。脚本在脚本开始时从数据库检索一组键/值对,这些键/值对是配置值

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

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

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

您可以将其保留为:-

$_SESSION['_config_data']['index_1'] = 'value_1';
$_SESSION['_config_data']['index_2'] = 'value_2';
$_SESSION['_config_data']['index_3'] = 'value_3';
...
这样,您将获得存储在会话变量$\u session[''u config\u data']中的所有配置数据

但您需要在设置方法开始时检查会话变量$\u session[''u config\u data']是否存在一些预填充的数据。如果是,则不需要为每个页面请求设置配置数据

希望能有所帮助。

您可以将其保留为:-

$_SESSION['_config_data']['index_1'] = 'value_1';
$_SESSION['_config_data']['index_2'] = 'value_2';
$_SESSION['_config_data']['index_3'] = 'value_3';
...
这样,您将获得存储在会话变量$\u session[''u config\u data']中的所有配置数据

但您需要在设置方法开始时检查会话变量$\u session[''u config\u data']是否存在一些预填充的数据。如果是,则不需要为每个页面请求设置配置数据


希望有帮助。

当我需要跨脚本存储少量数据时,我通常使用


当我需要跨脚本存储少量数据时,我通常使用

答案是:

这是针对这种场景的一种方式,有很多很好的教程,但官方php文档是一个很好的起点:

答案是memcached:

这是针对此类场景的一种方式,有很多很好的教程,但官方php文档是一个很好的起点:

…各届会议之间

相反,这意味着您已经在使用会话——那么为什么不使用自定义会话处理程序呢

使用会话id加载会话数据,并重载配置。或者,您可以设置它,以便调用read方法,只返回配置数据,而不搜索常规会话数据

可能最有效的方法是运行一个守护进程,这样您就可以将配置数据保存在PHP变量中。有一个很好的单线程服务器实现

…各届会议之间

相反,这意味着您已经在使用会话——那么为什么不使用自定义会话处理程序呢

使用会话id加载会话数据,并重载配置。或者,您可以设置它,以便调用read方法,只返回配置数据,而不搜索常规会话数据


可能最有效的方法是运行一个守护进程,这样您就可以将配置数据保存在PHP变量中。有一个很好的单线程服务器实现。

问题是我想在不同用户的不同会话之间共享数据。当注销会话被调用时,所有会话都将消失。因此,您需要在注销完成后通过调用此setter方法再次设置所有配置数据,或者需要在临时数组变量中设置所有这些配置数据,该临时数组变量需要在注销完成后再次设置为同一会话变量。请记住,我没有使用缓存概念,因为这些数据太重要了,不能用作缓存选项。问题是我想在不同用户的不同会话之间共享数据。当调用注销会话时,所有会话都将消失。因此,您需要在注销完成后通过调用此setter方法再次设置所有配置数据,或者需要在临时数组变量中设置所有这些配置数据,该临时数组变量需要在注销完成后再次设置为同一会话变量。请记住,我没有使用缓存概念,因为这些数据太重要了,不能用作缓存选项。至于APC vs Memcached:以及APC vs Memcached: