This Domain(Admin5.com) is for Sale:

My SQL数据库实用技术(28)

时间:2007-12-23  来源:不详  作者:迈克DB

您可能想知道,为什么解释程序的模块版本由于必须一直启动Apache 而能节省时间呢?。这个原因是,当Apache 启动时,它立即产生一些子过程,用于处理收到的请求。当包括脚本执行的请求到达时,已经有Apache 进程在预备等待去处理它。同样, Apache 的每个实例可服务于多个请求,所以该进程启动的开销只导致每组请求一次,而不是每个请求一次。
当Perl 和PHP 以模块形式安装时(像mod_perl 和m o d _ p h p 3),哪一个完成得更好一些?那就是争论的主题,以下是适用于一般性的指南:
■ Perl 将脚本转换为内部可编译的形式;而
PHP 却不这样。因此,一旦该脚本通过语法分析,则Perl 可更快地执行它,非凡是对于具有大量迭代的循环。
■ mod_perl 可以运行脚本高速缓存来提高重复执行的脚本的性能。假如脚本在高速缓存中,则Perl 可更快地开始执行脚本,因为它不需要再一次分析。否则,
PHP 开始执行的该脚本的速度更快。
■ mod_perl 比
PHP 有更大的内存覆盖区;利用mod_perl 连接的Apache 进程比利用mod_php3 的更大。PHP 被假定必须在另一个进程的内部协同存在,并且在那个进程内部可以多次激活或撤消。Perl 被设计成从命令行作为独立程序运行,而不是作为被嵌入在Web 服务器进程中的一个语言进行运行。这可能使它付出较大的内存覆盖区; copyright dedecms
Perl是模块,因此它不运行在自身环境中。脚本的高速缓存和该脚本使用的附加P e r l模块是付出较大的内存覆盖区的另外的因素。在这两种情况下,有更多的代码使用内存,并将运行的Apache 进程保留在内存中。
在脚本运行速度方面,Perl 无论有什么可超过
PHP 的优势,都被PHP 4 除掉了。PHP 4 在它的能力和接口方面类似于PHP 3,但它合并了Zend,Zend 是一种更高性能的解释程序的引擎。
无论如何,所有的这些因素只导致Perl 和
PHP 的模块版本之间性能比不同。无论您选择哪种语言,最重要的是尽可能地避免独立的解释程序。
解释程序的独立版本的确有一个优点超过它的模块版本,即可以安排它在不同的用户I D下运行。模块版本始终运行在与Web 服务器相同的用户ID 下,出于安全原因,该用户是一个典型的具有很少权限的账号。对于需要非凡权限的脚本来说不能很好地运行(例如,假如您需要能读写受保护的文件)。假如愿意,可以将模块方法和独立方法结合起来:缺省情况下使用模块版本,而在具有特定用户的权限的脚本的情况下使用独立版本。
织梦好,好织梦

降低mod_perl 的内存需求
有些技术答应您只能对mod_perl 使用某些的Apache 进程。这样,只对运行Perl 脚本的那些进程产生额外的内存开销。Apache Web 站点的mod_perl 部分有可选择的各种策略的讨论(有关的具体信息,请参阅h t t p : / / p e r l . a p a c h e . o rg / g u i d e /)。综上考虑,也就是说,选择Perl 还是P H P,您应该试着从Apache 模块中而不是通过调用一个单独的解释程序过程来使用它。只对不能由模块处理的那些情况使用独立的解释程序,例如需要非凡权限的脚本。对于这些实例,可以通过使用Apache 的suEXEC 机制在给定的用户ID 下启动解释程序来处理脚本。

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息