PHP的扩展

http://tech.qq.com/a/20110512/000301.htm (对其进行一些概括)

1 什么是PHP扩展化?

PHP本身是用C语言写的,你所编写的PHP脚本到最后都是通过C代码执行的,这时候PHP还提供一种方式可以直接写用C来写一个共享库,动态的共享库, 把它加载到PHP中,通过这种方式让你业务模式以C模式存在在PHP当中,这个模式就叫扩展,PHP提供一个很强大模块来支持你自己PHP扩展。

2 什么样的情况下我们应该使用扩展?

两种方式是需要扩展,1)第一种方式我们有一些,比方说已经成熟的C库,我们PHP许多办法直接用,我必须用一个扩展把它桥接过来,这种情况下需要使用PHP扩展;2)还有一种情况我对CPU密集型的东西,比方说我有一个算法,或者我有一个很复杂,很复杂的加密算法。这个算法如果我用PHP写的话非常慢,对于这种CPU密集型的东西,我是可以把它扩展化用C来实现,这样的话能提高性能。

3 扩展为什么会快?

这里我要提一下FaceBook极致,去年11月份极致把一个应用性能提高到4倍,他是怎么做到的呢?我们大家听各种各样报告,是把PHP编译成C++, 他这个编译其实不是说我根据你的逻辑找到对应的C代码进行编辑,他做的更多是把这个符号解析给拿掉了。我们在PHP里面,我们的变量,我们的函数都是存储 在一个一个关联数字结构里面,他这个结构设计足够精妙,确实也花很大心思去设计,但是当我们使用一个变量,或者一个方式的时候,都需要从这个表里面去查 的,这个过程是非常耗时的。

所以,PHP性能绝大部分低也是这个关键。PHP就把能在编译期间确定的符号就把它直接替换掉,相当于我们C程序编译的时候把符号直接换成二进制地址的一 样,就是一个符号回天。这只是一方面,还有一方面为什么扩展会比PHP快?这个我们抛开一切问题,一切IO,抛开一切内存存储我们来算一个简单算术题,一 个1G赫兹CPU能编织多少,这也是PHP比较慢一个原因。

发表回复

您的电子邮箱地址不会被公开。