2011-01-10 93 views
0

我正在转换php以从性能原因的cgi模式运行到模块模式。php模块 - 代码只需要执行第一次登录就像java

在CGI模式下,php代码每次都在执行。我有这样的感觉,这个转换 php代码将像Java一样运行在内存中。这意味着如果用户类在用户第一次登录时被实例化,它将作为内存中的类保留。但它似乎并非如此。所有代码 需要每次执行。

有没有办法像java一样运行PHP?

感谢

+0

你究竟想要做什么? – 2011-01-11 00:33:01

回答

0

我不是你的问题完全清楚,但如果你问缓存php文件的字节码,以减少加载时间,我会考虑使用APC(http://php.net /manual/en/book.apc.php)。

它会缓存你的php的字节码,并显着减少加载一个未修改的类所需的时间。

+0

我看着APC,它帮了很大忙。代码速度提高了50%。 – 2011-01-12 04:47:09

+0

我对APC有另一个问题。不知道我是否应该创建一个新的线程。我希望理想情况下有2个缓存 - 一个静态的通用包含和第二个基于请求动态构建/刷新。我只看到缓存可以是完全动态的(当新的缓存被添加时,旧的页面会被刷新。apc.user_ttl ne 0)或者静态的(当缓存第一次满时,不会再添加页面apc.user_ttl = 0)。另外理想情况下,我喜欢在httpd服务器(通过php模块)启动时预加载页面,但它看起来不像这个选项可用(尝试apc.preload_path,但似乎不工作)。谢谢 – 2011-01-12 16:56:59

2

不,PHP的模块版本与CGI版本在这方面的工作方式相同,因此您不能在请求之间保留“内存”类。

因此,您仍然需要在请求之间存储/序列化数据,这意味着使用会话,因为每个请求都将由“新”脚本处理。

你想使用“应用服务器”,但PHP不能这样工作(AFAIK),并且PHP Apache模块不是应用服务器。