为所有用户创建全局会话

时间:2014-03-15 23:48:56

标签: php session-variables

我正在使用php 5.4

会话变量$_SESSION['name']用于存储数据,以便数据可以在将来的任何请求中访问,但仅对用户是唯一的

是否有可能创建一个类似于会话变量的东西,所有请求都可以访问但无论是哪个用户?换句话说,会话变量不是用户唯一的

目前我正在使用MySQL数据库来存储临时数据,但我认为如果可以Global Session for all users,则可以提高性能 我想存储一些非常小的东西,如4位数字

5 个答案:

答案 0 :(得分:4)

默认情况下,会话数据为serialized并保存到与用户会话关联的临时文件中,该文件由cookie跟踪。您也可以配置要保存在数据库中的会话数据。这些数据可通过$_SESSION超级全球用户获得。

因此,如果您遵循该逻辑,那么将serialized数据存储在文件中或将其存储在数据库中并访问它,它就不会成为一个超全局,但如果你是一个超级全局的东西将其作为全局数组(例如$GLOBALS['all_peeps']

)读取

您可以对对象或静态类执行相同操作。它与您用于应用程序的配置变量完全相同,无论用户是谁。

答案 1 :(得分:1)

根据wikipedia

会话是计算机和用户之间的半永久性交互式信息交换(...)。

好吧,你可能会错过理解会话的含义。会议不应该是全球性的。

无论如何你想要一些在用户之间共享信息的机制,你应该使用数据库或文件(标准的php会话存储在文件中[每个实例一个])。

答案 2 :(得分:0)

会话不能和不应该用作GLOBAL。

  1. 我无法理解为什么要在会话变量中存储一个4位数的小数字。我假设它是一个动态值(不是静态的,这就是为什么你不能在你的一个配置文件中存储变量)。

  2. 实现这一目标的最佳方法是使用MySQL ......其他选择是SQLite。

  3. 您也可以通过将该值存储在本地文件中来实现相同的目标。

  4. 存储价值:

    $fp = fopen("variable_name.txt", "w");
    fwrite($fp, $value); // $value is the 4 digit value you wish to store.
    fclose($fp);
    

    检索值:

    $fp = fopen("variable_name.txt", "r");
    
    $value = fread($fp, 1024);
    
    fclose($fp);
    

    如果您可以添加更多详细信息/代码......那会更好。

答案 3 :(得分:0)

如其他答案所述,会议不应该是全球性的。但为什么呢?

原因:Web服务器通常是多线程的。即多个请求同时提供。如果一个进程同时写入全局会话和其他读取,则可能会读取不完整的数据。 (而且会发生更严重的事情)

如果您使用文件共享公共数据且数据可能会更改请求,则应对文件使用操作系统级别锁定。这很困难,不推荐。

如果您在全球季节使用数据库, 如果会话只有一个数据,那么它应该没问题,因为数据库将确保没有不完整的临时状态。 如果季节有多个数据并且它们彼此相关,则应使用数据库的事务功能来确保它们在所有情况下都处于有效状态。

答案 4 :(得分:0)

是的,它可以用作全局变量,您甚至可以仅使用会话进行某种聊天,但这不是最佳方法。只需为每个用户设置相同的session_id

相关问题