美文网首页
php 开启 opcode 测试

php 开启 opcode 测试

作者: Xiaodongsu | 来源:发表于2017-08-15 22:38 被阅读0次

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 介绍

  1. php 运行方式

    1. Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)
    2. Parsing, 将Tokens转换成简单而有意义的表达式
    3. Compilation, 将表达式编译成Opocdes
    4. Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。
  2. 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代码
};
  1. 参数配置参考地址 点击这里
  1. opcode 注意事项

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

测试结果

测试代码

<?php
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:      1430000 bytes
HTML transferred:       1300000 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:      1430000 bytes
HTML transferred:       1300000 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 会给程序带来不错的优化效果

相关文章

  • php 开启 opcode 测试

    php 开启 opcode 测试 实验环境 系统信息 Linux localhost.localdomain 3....

  • php入门--性能测试

    PHP性能问题具体分析 工具:XHProf-性能分析扩展工具ab-压力测试vld-opcode代码分析 PHP性能...

  • php源码-如何查看opcode源码

    opcode是什么大家都不陌生, php代码经过编译后就会形成opcode数组,zend引擎执行的就是opcode...

  • Opcode缓存

    PHP项目执行流程 【简单理解】读取源码 -》 词法分析 -》 创建opcode -》 执行opcode 重复创...

  • php源码-异常throw处理过程-02

    php代码中的 throw 被编译完后的opcode 如下 opcode: 108 ZEND_THROW , in...

  • php原理:vld-查看OPCode神器

    前言 OPCode是一种PHP脚本编译后的中间语言,因为PHP程序会先被编译为中间形式(OPCode),然后才会在...

  • PHP相关

    一、 原理、流程相关 Nginx解析PHP过程 PHP执行过程 PHP垃圾回收机制 深入理解PHP Opcode缓...

  • 高性能php开发

    php优化路线 1.前端JavaScript/css/Images 2. php 代码优化tips Opcode缓...

  • PHP缓存之Opcode缓存

    PHP缓存之Opcode缓存 1. 什么是Opcode缓存? 当解释器完成对脚本代码的分析后,便将他们声称可以直接...

  • 深入理解PHP opcode优化

    转发:深入理解PHP opcode优化 1.概述 PHP(本文所述案例PHP版本均为7.1.3)作为一门动态脚本语...

网友评论

      本文标题:php 开启 opcode 测试

      本文链接:https://www.haomeiwen.com/subject/bzcbrxtx.html