首先说下编译和解释,对于编译而言,其编译和执行是分开的,先需要将我们写的代码文件编译成电脑可识别机器码,保存成二进制文件,然后在运行时直接执行机器语言,速度很快;而解释器是在程序运行时,逐条解释翻译成机器语言,然后在执行,所以运行速度是慢的。
PHP是解释性语言,在运行PHP时,翻译器并不是直接生成机器语言,而是生成中间码opcode,然后在由专门的解析器将中间码opcode翻译成机器语言执行,注意opcode是不能执行的,必须由专门的解析器给编译。PHP用的解析器是zend,opcache的作用就是将opcode缓存到共享内存中,进而加速PHP脚本的运行速度。opcache在PHP5.5之后可以直接启用。
如何开启opcache和一些常用参数:
修改配置文件即可:
;opcache
[Zend Opcache]
zend_extension=/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/opcache.so
opcache.enable = 1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
逐一解释一下:
zend_extension opcache的扩展地址
opcache.enable 1 开启 0 关闭
opcache.memory_consumption 共享内存大小 以M为单位
opcache.interned_strings_buffer 存储临时字符串的大小 以M为单位 PHP使用字符串驻留的机制提升性能
opcache.max_accelerated_file 可存储的所有PHP文件的数量
opcache.revalidate_freq 每隔多少秒 检查更新脚本 单位为秒 该参数必须是开启 opcache.validate_timestamps才生效 , 默认是开启的
opcache.fast_shutdown 设置为1 启用快速关闭 作用是能在本次请求结束后 快速的回收变量释放内存 , 从而加速PHP的响应和回收速度 , 能够快速的执行下次请求响应。
opcache.enable_cli cli下的PHP使用opcache
然后使用ab测试一下缓存之后的对比:
ab -n100 -c100 http://***/ 并发100 请求100
没开启之前:
开启之后:
我们主要看 time taken for tests 和 requests per second这两个参数:
time taken for tests 记录所有请求一共花费多长时间
requests per second 记录吞吐率 即每秒响应成功的最大次数
。。 差距还是很明显的 , PHP远非所看到的如此简单 , 听人说语言知识一种工具 , 语言本身并无差别,重要的是思想理解和你怎么去用 , 我热爱编程 , 并且心怀梦想 , 以后的道路任重道远 , 希望自己不忘初心 , 砥砺前行 。