gpt4 book ai didi

php - 现在还使用 PHP session 吗?

转载 作者:行者123 更新时间:2023-12-02 06:34:57 24 4
gpt4 key购买 nike

有没有更现代的 PHP session 替代品,或者 PHP session 是否仍然是存储信息的主要选择?我读到这个:https://pasztor.at/blog/stop-using-php-sessions .我仍在学习 PHP,坦率地说,我很无能。

最佳答案

您的第一个假设不正确。 PHP session 不是您存储数据的地方。数据库、文件、文档存储等是您存储数据的地方。

session “数据”只是以序列化形式包含在 $_SESSION 数组中的变量。您可以对变量运行 serialize() 和 unserialize() 以深入了解它们的外观。

在您的脚本中,一旦您使用 session_start() 启动了一个 session ,当您在 $_SESSION 中添加更改或删除变量时,php 会序列化它并为您存储它。

一旦 session 存在,并且用户发出另一个请求,该请求被识别为同一用户(具有相同的 session ID),通常通过 cookie 传递给客户端,然后在发出 session_start() 时,PHP 读取 session 文件中的序列化数据,并将其反序列化,并将其存储回 $_SESSION。

默认情况下,PHP 会将单个 session 数据作为文件存储在文件系统中。对于中小型应用程序,这是高性能的。

所以要明确一点,人们在 PHP session 中存储的基本上是从您可能拥有的任何其他持久存储中读取的变量,这样您就可以避免执行诸如重新查询数据库以获取用户的名称和 user_id 之类的事情谁已经登录到您的应用程序。

它不是该数据的主版本,也不是该数据发生变化时您更新该数据的地方。那将是原始数据库或 mongodb 集合。

您发布的文章有许多已声明和未声明的假设,包括:

  1. Devops/系统管理员只是决定重新配置 PHP 应用程序以更改 session 处理程序(误导/错误)
  2. 部署涉及负载均衡器(可能)
  3. 负载均衡器不支持或使用粘性 session

然后他详细介绍了几种允许共享 session 处理程序解决他描述的竞争条件的替代方案

正如您所说,您还不清楚 session 到底是什么,或者它们如何工作或者它们为您做什么。关于 PHP 脚本需要了解的重要一点是,它们与单个请求相关联,并且 session 是一种不重复昂贵的数据库读取的方式。它本质上是供 PHP 在适合您的设计时使用(或不使用)的变量缓存。

正如文章中指出的那样,此时您拥有一个集群,人们通常将数据存储到共享资源中,共享资源可以是关系数据库,也可以是许多其他后端中的任何一个,每个后端都具有符合其目标的不同属性。

同样,为了更改 session 处理程序,通常会更改代码以实现所需的 session 处理程序功能,并且有一些方法可以编写代码来缓解您发布的文章中提出的问题,大约人们使用的每一种持久性产品。

最后但同样重要的是,所描述的问题在任何程度上都存在于几乎所有集群服务器端进程中,并且并非 PHP 或其 session 机制所独有。

关于php - 现在还使用 PHP session 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com