php 開啟 opcode 測(cè)試

php 開啟 opcode 測(cè)試

實(shí)驗(yàn)環(huán)境

  • 系統(tǒng)信息 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

  • 內(nèi)存 512M CPU 1核

  • PHP 版本 PHP 7.0.21 & Zend OPcache v7.0.21

opcode 介紹

  1. php 運(yùn)行方式

    1. Scanning(Lexing) ,將PHP代碼轉(zhuǎn)換為語(yǔ)言片段(Tokens)
    2. Parsing, 將Tokens轉(zhuǎn)換成簡(jiǎn)單而有意義的表達(dá)式
    3. Compilation, 將表達(dá)式編譯成Opocdes
    4. Execution, 順次執(zhí)行Opcodes,每次一條,從而實(shí)現(xiàn)PHP腳本的功能。
  2. Zend 中opcode 緩存結(jié)構(gòu)體

struct _zend_op {
    opcode_handler_t handler; // 執(zhí)行該opcode時(shí)調(diào)用的處理函數(shù)
    znode result; // 函數(shù)返回信息
    znode op1; // 參數(shù)1
    znode op2; // 參數(shù)2
    ulong extended_value;
    uint lineno;
    zend_uchar opcode;  // opcode代碼
};
  1. 參數(shù)配置參考地址 點(diǎn)擊這里
  1. opcode 注意事項(xiàng)

    1. opcode 生成規(guī)則是,通過(guò)時(shí)間戳進(jìn)行生成新 opcode,在生產(chǎn)環(huán)境中如果發(fā)布版本回退,老的opcode 生成時(shí)間會(huì)大于回退版本文件的當(dāng)前時(shí)間戳的。 也就是說(shuō)不會(huì)再更新啦。

測(cè)試結(jié)果

測(cè)試代碼

<?php
for($i=0;$i<100;$i++){
    echo "Hello Opcache";
}

執(zhí)行命令 ab -n 1000 -c 100 http://192.168.1.110:8080/t1.php

開啟時(shí)測(cè)試結(jié)果結(jié)果

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

關(guān)閉后測(cè)試結(jié)果

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

結(jié)論

在開啟 opcache 后 每秒鐘請(qǐng)求從 589.89 增長(zhǎng)到了 1024.27
合理利用 opcache 會(huì)給程序帶來(lái)不錯(cuò)的優(yōu)化效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容