0

这是我的问题:考虑 Python 中的 Django 或 web2py(作为 Web 框架)或 Java WEB 应用程序(作为简单的 servlet 应用程序或复杂的 struts2/wicket/whatever 框架)。他们至少分享了我喜欢的两件事:

  1. 有一个上下文环境或一种方法可以从请求或会话上下文中访问数据(即全局数据、单例、池......任何可以共享内存值和行为的东西)。
  2. 类被加载/初始化一次。也许我错过了一些东西,但是 PHP 中的 AFAIK 一个类是在 PER REQUEST 的基础上加载和初始化的(所以,在一个常规类中,如果我(例如)修改一个静态值,这将只存在于当前请求中,甚至同时请求达到该值将获得不同的值)。

有没有办法在php中得到它?例如,在 Python/Django 中,我可以声明一个常规类,并且该类可以保存静态数据或者是一个真正的单例(再次:可能是一个池或一种中央队列管理器),并且在 django 服务器死亡之前将是同一个对象(注意:python 中的模块在导入时会保持在 python 上下文中加载)。

4

1 回答 1

0

PHP 的“上下文”存在于每个请求的基础上,这一事实几乎是该语言如何与 Web 服务器一起使用的核心。

如果你想让它更像 Java 或其他不会在每个请求中重置数据的语言,你基本上有两个选择:

  • 将数据序列化为文件、数据库等,并在下一个请求时重新加载
  • 使用 PHP 编写服务器,而不是通过 Web 服务器提供您的页面

将数据序列化到存储中并在后续请求中重新加载是典型的方法。

虽然可能,但我不建议用 PHP 本身编写服务器。尽管付出了很多努力,PHP 仍然存在某种糟糕的内存管理,并且您很可能在长时间运行的 PHP 进程中遇到内存泄漏。

于 2013-07-15T17:47:59.817 回答