php 开启opcode,php 开启 opcode 测试

php 开启opcode,php 开启 opcode 测试php 开启 opcode 测试 合理使用 实验环境系统信息 Linuxlocalho localdomain3 10 0 514 10 2 el7 x86 64 1SMPFriMar30 04 05UTC2017x86 64×86 64×86 64GNU Linux 内存 512MCPU1 核 PHP 版本 PHP7 0 21 amp ZendOPcach

php 开启 opcode 测试,合理使用~

实验环境系统信息 Linux localhost.localdomain 3.10.0-514.10.2.el7.x86_64 #1 SMP Fri Mar 3 00:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

内存 512M CPU 1核

PHP 版本 PHP 7.0.21 & Zend OPcache v7.0.21

opcode 介绍php 运行方式Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)

Parsing, 将Tokens转换成简单而有意义的表达式

Compilation, 将表达式编译成Opocdes

Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。

Zend 中opcode 缓存结构体

struct _zend_op {

opcode_handler_t handler; // 执行该opcode时调用的处理函数 znode result; // 函数返回信息 znode op1; // 参数1 znode op2; // 参数2 ulong extended_value;

uint lineno;

zend_uchar opcode; // opcode代码};参数配置参考地址 点击这里

opcode 注意事项opcode 生成规则是,通过时间戳进行生成新 opcode,在生产环境中如果发布版本回退,老的opcode 生成时间会大于回退版本文件的当前时间戳的。 也就是说不会再更新啦。

测试结果

测试代码

for($i=0;$i<100;$i++){

echo “Hello Opcache”;

}执行命令 ab -n 1000 -c 100 http://192.168.1.110:8080/t1.php

开启时测试结果结果Concurrency Level: 100

Time taken for tests: 0.976 seconds

Complete requests: 1000

Failed requests: 0

Write errors: 0

Total transferred: bytes

HTML transferred: bytes

Requests per second: 1024.27 [#/sec] (mean)

Time per request: 97.630 [ms] (mean)

Time per request: 0.976 [ms] (mean, across all concurrent requests)

Transfer rate: 1430.38 [Kbytes/sec] received

关闭后测试结果Concurrency Level: 100

Time taken for tests: 1.695 seconds

Complete requests: 1000

Failed requests: 0

Write errors: 0

Total transferred: bytes

HTML transferred: bytes

Requests per second: 589.89 [#/sec] (mean)

Time per request: 169.522 [ms] (mean)

Time per request: 1.695 [ms] (mean, across all concurrent requests)

Transfer rate: 823.78 [Kbytes/sec] received

结论在开启 opcache 后 每秒钟请求从 589.89 增长到了 1024.27 合理利用 opcache 会给程序带来不错的优化效果

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233637.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python新手怎么兼职-利用python兼职[通俗易懂]

    python新手怎么兼职-利用python兼职[通俗易懂]广告关闭2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。未来,我们一起乘风破浪,创造无限可能。类似这种需求也在很多ppt兼职群(qq群搜索就可以查到)里能遇到,如果会python来自动批量操作ppt调整格式,那接单岂不是来者不拒?为了给大家增加一个赚钱的小机会,行哥这里给大家分享一下python操作ppt的用法用法大纲如下:?安装工具包首先用pip安装python…

    2022年6月11日
    59
  • Spring AOP中的JDK和CGLib动态代理哪个效率更高?

    Spring AOP中的JDK和CGLib动态代理哪个效率更高?一、背景今天有小伙伴面试的时候被问到:SpringAOP中JDK和CGLib动态代理哪个效率更高?二、基本概念首先,我们知道SpringAOP的底层实现有两种方式:一种是JDK动态代理,另一种是CGLib的方式。自Java1.3以后,Java提供了动态代理技术,允许开发者在运行期创建接口的代理实例,后来这项技术被用到了Spring的很多地方。JDK动态代理主要涉及…

    2022年5月1日
    43
  • linux永久关闭防火墙命令需要重新加载环境变量吗_linux常用命令关闭防火墙

    linux永久关闭防火墙命令需要重新加载环境变量吗_linux常用命令关闭防火墙第一步:systemctlstopfirewalld.service(暂时关闭防火墙服务,系统重启后防火墙还会打开)第二步:systemctldisablefirewalld.service(通过关闭防火墙服务,开机自动启动,来做到永久关闭防火墙服务)如何查看防火墙状态呢?systemctlstatusfirewalld.service如图所示,就代表关闭成功了…

    2025年9月20日
    5
  • 使用CGlib实现Bean拷贝(BeanCopier)「建议收藏」

    使用CGlib实现Bean拷贝(BeanCopier)「建议收藏」在做业务的时候,我们有时为了隔离变化,会将DAO查询出来的Entity,和对外提供的DTO隔离开来。大概90%的时候,它们的结构都是类似的,但是我们很不喜欢写很多冗长的b.setF1(a.getF1())这样的代码,于是我们需要BeanCopier来帮助我们。BeanCopier其实已经有很多开源版本,例如DozerMapper、ApacheBeanUtils、Spring、JoddBeanU…

    2025年9月14日
    4
  • mysql数据库设计工具_四种优秀的数据库设计工具

    mysql数据库设计工具_四种优秀的数据库设计工具【51CTO.com快译】众所周知,良好的数据库设计能够大幅减少后期的运维工作,同时也能最大程度地减少软件项目出错的可能。由于我们所面临的真实项目需求往往五花八门,因此需要找到合适的设计工具,来实现事半功倍的效果。本文将从如下四个方面和您一起比较四种优秀数据库设计工具的各自优缺点。用户界面可支持的数据库数据工具售价1.DbSchemaDbSchema是一种可用于复杂数据库设计和管理的可视化工具。该…

    2022年7月11日
    22
  • ue4 弱指针_智能指针如何实现自动释放

    ue4 弱指针_智能指针如何实现自动释放原创文章,转载请注明出处。UE4也有一套智能指针库,整理了一下做个介绍。也请大家做补充。共享指针/共享引用/弱指针/注意事项一.TSharePtr1.如何创建一个TSharePtr2.TSharePtr如何进行类型转换1)TSharePtr转TSharePtr2)ConstTSharePtr转TSharePtr3)TSharePtr转TShareRef3.使用注意事项1)TSharePtr2)类型转换二.TShareRef1.如何创建一个TShareRef2.TShareRef如何进行类型转换1)TS

    2022年10月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号