PHP初学者:对象存储在何处以及如何存储?

时间:2011-09-29 11:02:59

标签: php oop web-applications memory

在用PHP编写的应用程序(例如社交网络)中,假设有10位用户(已登录)正在浏览该网站。

在PHP代码中,创建了“用户”对象来存储用户数据并将值传递给其他函数和类。

问题:当这10个用户转到user.php,其中有代码创建“user”对象时,这些对象如何在PHP中存储在内存中?他们不冲突吗?每个“用户”对象是唯一存储在内存中还是会被另一个覆盖?

例如,用户首先访问,因此对象“user”包含他/她的数据,但是当用户第二次访问时,内存中的“用户”对象被覆盖,因此当第一个用户调用该对象时,它是检索到的第二个用户数据。

或者,它是独一无二的吗?

我希望将PHP中的对象理解为新手,请解释一下,因为我找到的关于OOP的网页都没有解释这一点。

4 个答案:

答案 0 :(得分:7)

PHP是一个CGI应用程序,这意味着,它是在每个请求上启动和终止的。

  • 客户端向Web服务器发送请求
  • 服务器启动PHP并将请求传递给它
  • PHP为您的脚本分配一块内存
  • 您的脚本正在执行,它创建的所有对象都存储在那块内存中
  • 你的脚本生成一些html,这个html被发送到客户端
  • 释放内存并停止PHP

如果您同时有10个客户端请求,则将启动10个php副本,并将使用10个独立的内存块。所以,不,来自不同请求的对象不会干扰。

(注意:这个解释是故意简化的,实际上有不同的php设置和持久性选项)。

答案 1 :(得分:2)

学习这个的最好方法是在本地PC或Mac上安装php,然后创建一个php信息文件

<?php
phpinfo();
?>

...然后在浏览器中打开它......这将显示服务器上用于php和其他内容的所有设置。

关于你的问题的答案,这是一个关于newbee的高级主题,但php会话是保持用户信息的工作。它们通常会在一段时间内处理用户独有的会话ID,并且它们会动态分配内存或磁盘空间/平面文件或数据库(再次参见上面的设置)来存储相关数据。

不幸的是,对于你来说,这些都不是“自动的”,你必须创建脚本以使其发生并以你想要的方式运行。在这个网站上提出问题是一个良好的开端......

答案 2 :(得分:1)

你需要查看与php相关的对象设计模式,这本身就是一个很大的主题。有一本名为“PHP对象,模式和实践”的优秀Apress书籍,它解释了一些更常见的模式以及如何使用它们,并且是开始学习的好地方。

答案 3 :(得分:1)

用户信息全部存储在数据库中,每次页面加载时,用户对象都必须检索此数据。

对象知道用户正在查看页面的内容是因为他们的session_id在坚果shell中是给你的随机ID,存储在cookie中。

使用session_id,您可以从数据库中检索正确的信息。