2012-04-19 63 views
8

我记得阅读php.net(但很不幸似乎无法找到该网页)的PHP解释器可以以不同的方式运行PHP对象 - 最常见的,每次请求一个页面时,的一个实例PHP解释器被创建,运行其过程,然后被销毁,以及与该特定页面调用相关联的所有内存。显然,也可以允许所有的内存留下来,以便它可以在将来的页面调用中再次使用;据我了解,基本上允许多个不同的PHP脚本访问和修改相同的对象,而不会在脚本完成后丢失它们。是留在记忆

或者至少,让我记住了。有没有道理呢?如果是这样,我将如何设置它?

+3

你想解决什么问题?原始问题是什么? – zerkms 2012-04-19 21:11:34

+8

也许$ _SESSION变量是你需要的全部:) – jantimon 2012-04-19 21:12:23

+0

如果你想在内存中保存对象,然后将它们缓存在APC或Memcached中。但是,也许你只是在寻找会话功能。 – halfer 2012-04-19 21:13:26

回答

5

PHP不工作的方式。它关于跑步和忘记。

则可以使用用户级共享存储器扩展程序保存请求之间的数据,例如:APC,了XCache,分布式缓存,等等

或通过使用调用在session_start

$ _SESSION

后的会话的数据数组

不认为PHP脚本的像如Java应用程序tomcat的。标准的PHP不是为那个用例设计的。 php编译器可以即时工作。

+0

我发现[session_name](http://php.net/manual/en/function.session-name.php)对此非常有帮助。每个文件可以共享同一个session_name,并且所有相关数据都可以存储在会话对象中。这样,我可以运行一个用于设置会话对象的init文件,然后所有相关的脚本文件都可以相应地使用它。 – Monchoman45 2012-04-19 22:04:34

+0

@ Monchoman45在我看来,如果这是你的话,会议不会取代$ GLOBALS或页面缓存;) – Hajo 2012-04-19 22:08:31

0

让请求之间的服务器逗留,所以将物体做:

通用HTTP应用程序的做法有了很好编写的应用程序这比APC提供了更多的速度,但是如果你需要添加多重盒子(你仍然可以使用粘性会话),它不会在用户之间进行扩展。

1

您可以使用shared memory一些你想要什么,但Redis的/内存缓存可能是更好的选择。