深入理解PHP opcode优化

1.概述 PHP(本文所述案例PHP版本均为7.1.3)作为一门动态脚本语言,其在zend虚拟机执行过程为:读入脚本程序字符串,经由词法分析器将其转换为单词符号,接着语法分析器从中发现语法结构后生成抽象语法树,再经静态编译器生成opcode,最后经解释器模拟机器指令来执行每一条opcode。 在上述整个环节中,生成的opcode可以应用编译优化技术如死代码删除、条件常量传播、函数内联等各种优化来精简opcode,达到提高代码的执行性能的目的。 PHP扩展opcache,针对生成的opcode基于共享内存支持了缓存优化。在此基础上又加入了opcode的静态编译优化。这里所述优化通常采用优化器(Optimizer)来管理,编译原理中,…

Read More

Zan 连接池

一、设计背景 Zan是基于PHP协程的网络服务框架,提供最简单的方式开发面向C10K+的高并发HTTP服务或SOA服务。 核心特性: 1. 基于 yield 实现了独立堆栈的协程 2. 类似于 Golang 的并发编程模型实现 3. 基于 swoole 提供非阻塞I/O服务 4. 连接池支持 5. 类似 Golang 的defer机制解决由于异常导致的资源未释放、…

Read More

Zan & Swoole2.0

Swoole2.0 alpha版发布,大家可能会有个疑惑, Zan的协程框架是不是要关门大吉了呢? 答案当然是否定的。 Zan和Swoole2.0走的方向是不一样的; Swoole2.0的方向是希望和Golang一较高下; Zan的定位是搭建一个Zan + Golang的生态; Swoole2.0 鸟哥的出现确实让国人在技术界猛的一抬头。 天峰的Swoole也备战了很多年,任重道远。 Zan目前是基于Swoole搭建的,和2.0并没有什么冲突。 大家一起努力吧。 重申下Zan的定位: Zan 的定位是高并发 Web…

Read More