分类目录归档:PHP内核

nginx_lua为什么比PHP性能高

之前做过测试用nginx_lua实现简易的API是PHP的8倍,线上复杂逻辑API是PHP的4倍。

最近在回顾之前实践经验的时候,有一个问题一直想来想去,之前并没有深入思考过,为什么nginx_lua的性能比PHP高这么多?

以下是最近思考的以下原因:
0、nginx_lua是把lua作为nginx的一个模块,是异步非阻塞的方式
1、lua运行时占用内存特别少。
2、Openresty是让Web服务直接跑在Nginx服务内部,充分利用Nginx非阻塞I/O模型。
继续阅读

PHP7和PHP5区别

PHP7比PHP5.0 ~ 5.6快了近5倍,同时还降低了对系统资源的占用。主要是PHP7对Zend引擎进行了深度优化。

之前在书上看到过两者比较全面的区别,回头去翻了翻书【眼过千遍,不如手过一遍啊】,特记录如下。

分三个方面来比较:
0、底层优化
1、语法变化
2、性能变化

0、增加抽象语法树(AST)。
PHP5:PHP代码在语法解析阶段直接生成opline指令,执行器直接执行opline指令。
PHP7: PHP代码解析生成抽象语法树,然后将抽象语法树编译成opline指令。解耦编译器和执行器。
继续阅读

PHP生命周期5个阶段

今天准备加入一个PHP内核QQ群,申请条件是回答PHP生命周期的5个阶段,一时间还需要去查。特整理如下

0、模块初始化阶段
PHP框架、Zend引擎初始化操作。入口函数为:php_module_startup()。主要进行操作如下:

  • 启动Zend引擎
  • 初始化垃圾回收器
  • 注册PHP定义的常量:PHP_VERSION等
  • 解析php.ini
  • 注册扩展,包括静态编译的扩展和动态加载的扩展

继续阅读