PHP会话现在还在使用吗?

PHP会话现在还在使用吗?,php,session,Php,Session,是否有比PHP会话更现代的替代方案,或者PHP会话仍然是存储信息的主要选择?我读到这个:。我仍在学习PHP,坦率地说,我很无知。通常,这取决于应用程序的用例和其他要求,大多数时候人们会使用PHP框架来处理会话 例如,对于yii2框架,该框架提供了不同的会话类来实现不同类型的会话存储。看看这里 学习不同类型的课程,让你能够权衡利弊做出决定。您也可以阅读此处以了解更多信息您的第一个假设是错误的。PHP会话不是存储数据的地方。数据库、文件、文档存储等是存储数据的地方 会话“数据”只是以序列化形式包含在

是否有比PHP会话更现代的替代方案,或者PHP会话仍然是存储信息的主要选择?我读到这个:。我仍在学习PHP,坦率地说,我很无知。

通常,这取决于应用程序的用例和其他要求,大多数时候人们会使用PHP框架来处理会话

例如,对于yii2框架,该框架提供了不同的会话类来实现不同类型的会话存储。看看这里


学习不同类型的课程,让你能够权衡利弊做出决定。您也可以阅读此处以了解更多信息

您的第一个假设是错误的。PHP会话不是存储数据的地方。数据库、文件、文档存储等是存储数据的地方

会话“数据”只是以序列化形式包含在$\u会话数组中的变量。您可以对变量运行serialize()和unserialize(),以了解这些变量的外观

在脚本中,使用session_start()启动会话后,当您在$_会话中添加更改或删除变量时,php会将其序列化并为您存储

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

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

因此,需要明确的是,人们在PHP会话中存储的基本上是从您可能拥有的任何其他持久性存储中读取的变量,因此您可以避免执行诸如重新查询数据库以获取已登录到您的应用程序的用户的名称和用户id之类的操作

它不是该数据的主版本,也不是在数据发生更改时更新该数据的位置。这将是原始数据库或mongodb集合

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

  • Devops/Sysadmins只是决定重新配置PHP应用程序以更改会话处理程序(误导/错误)
  • 部署涉及负载平衡器(可能)
  • 负载平衡器不支持或使用粘性会话
  • 然后,他详细介绍了几个备选方案,这些方案允许共享会话处理程序解决他描述的竞争条件

    正如您所说的,您还不清楚实际的会话是什么,或者它们是如何工作的,或者它们为您做了什么。关于PHP脚本需要了解的重要一点是,它们与单个请求绑定,会话是避免重复昂贵的数据库读取的一种方式。它本质上是PHP在适合您的设计时可以使用(或不使用)的变量缓存

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

    同样,为了更改会话处理程序,通常会对代码进行更改以实现所需的会话处理程序功能,并且有一些方法可以为人们使用的几乎每种持久性产品编写代码,以缓解您在文章中提出的问题


    最后但并非最不重要的一点是,所描述的问题在几乎所有集群服务器端进程中都存在,并且不是PHP或其会话机制所独有的。

    这是一篇奇怪的文章。也就是说,在某些地方,无会话方法是有意义的,比如API。这感觉有点像是基于意见的,不是吗?或者可能是太宽了?看来作者对会话处理程序的理解有限,这不是“解决办法”——因为任何共享资源都应该考虑可能的竞争条件。本文提出了一个解决问题的解决方案。状态在某些情况下是必不可少的,PHP会话是大多数应用程序的良好起点。作为一名学习者,从这一点开始,当你的需求决定了其他方法时,就去了解它。@YvesLeBorg谢谢你的建议。我需要一个学习指南,这样我才能更好地理解更复杂的概念。