首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要在PHP中使用带有fastcgi的加速器?

为什么要在PHP中使用带有fastcgi的加速器?
EN

Stack Overflow用户
提问于 2010-09-05 21:28:47
回答 3查看 580关注 0票数 4

我是网络技术的新手,还处在学习曲线上。听说,fastcgi会将编译(解释)的PHP代码保存在内存中,那么为什么要使用php的操作码缓存(apc或eaccelerators)呢?但是我从来没有听说过任何这样的Python加速器。我希望python和php都是解释型语言,这让我想,python加速器应该有空间吧?如果我说错了,请纠正我。

非常感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-05 21:45:44

一旦PHP处理完该文件,它就会忘记即时编译。这意味着PHP每次需要从文件中获取内容时都必须重新编译该文件。一个OpCode缓存(就像你所说的绕过这一步,并将编译好的OpCode类保存在内存中一段预定的时间)。

另一方面,Python会在第一次运行时将代码编译成速度快得多的可解释代码。你可以看到项目周围的所有.pyc文件,它们等同于PHP的OpCode。

Python缓存通常捆绑了其他特性(内存驻留的数据存储),这些特性也是由OpCode提供的。

不过,Python有几个“加速器”。最值得注意的是Psyco,它声称在理想条件下速度可以提高2倍到100倍。但这是以极其沉重的内存成本为代价的,而且它只能在i386 archs上运行。

票数 2
EN

Stack Overflow用户

发布于 2010-09-05 21:45:20

与PHP不同,(C)Python在运行字节码后不会将其丢弃。当导入module.py并且没有module.pyc时,将对其进行字节码编译,并将结果复制到module.pyc;如果它已经存在,则跳过编译并使用现成的module.pyc。用户也可以手动对主脚本执行相同的操作。

至于

PHP fastcgi会将编译(解释)的

代码保存在内存中,那么为什么一定要为php使用操作码缓存(apc或eaccelerator)呢?

我从来没有想到过这一点- FastCGI不会为每个请求启动一个新的进程(与普通的旧CGI相反,它基本上是作为一个新进程启动解释器),但仅此而已。This benchmark显示,FastCGI的性能并不比mod_php (即嵌入到Apache进程中的解释器)好。

票数 2
EN

Stack Overflow用户

发布于 2010-09-05 21:39:27

Python在执行时被编译成字节码( .pyc文件),字节码被保留下来,而不是被丢弃。如果存在已编译的python,则使用它来代替源代码。因此,python中不需要额外的操作码缓存,因为它已经内置了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3646205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档