opcache PHP新的位元組程式碼快取擴充詳解

來源:互聯網
上載者:User

位元組程式碼快取組件 Zend Optimizer+ 現在更改名字為 Zend opcache了。且在php 5.5版本後,會整合到php的官方組件中,也就沒有必要安裝其他的APC,eAccelerator等了。。

APC與Opcache都是位元組程式碼快取也就是,PHP在被編譯的時候,首先會把php代碼轉換為位元組碼,位元組碼然後被執行。

php檔案第二次執行時,同樣還是會重新轉換為位元組碼,但是很多時候,檔案內容幾乎是一樣的,比如靜態HTML檔案,產生後內容許久都不會改變,使用者訪問請求直接由伺服器讀取響應給用戶端瀏覽器。都不用經過PHP進行解析構建了。

記憶體中的位元組碼資料,可以直接緩衝進行二次編譯。這樣程式就會快一些,cpu的消耗也少了。

詳細介紹看這兩篇

新一代 PHP 加速外掛程式 Zend Opcache

php的 zend opcache VS apc 效能比較

我主要是用來測試了一下phpcmsV9.5.4 的預設index.php首頁,沒有資料內容,但有sql查詢操作

測試是Apache2.2.6 32Bit 伺服器,PHP 5.4.26 ts,mysql 5.6.16 64Bit

ab 版本 This is ApacheBench, Version 2.3 <$Revision: 655654 $>

請求數:1000

並發數:10

沒有載入opcache測試

第一次測試


吞吐率 38.46 rps,耗時26.001 s,每個請求耗時260.015 ms
第二次測試

吞吐率有所提高 40.73 rps,耗時 24.554 s,每個請求耗時245.544 ms

載入opcache進行測試
opcache版本 php_opcache-7.0.3-5.4-ts-vc9-x86

opcache配置資訊

 

1 opcache.memory_consumption=128
2 opcache.interned_strings_buffer=8
3 opcache.max_accelerated_files=4000
4 opcache.revalidate_freq=60
5 opcache.fast_shutdown=1
6 opcache.enable_cli=1
 
第一次配置opcache好後 cache 狀態
 
cache hits 命中數 1
cache misses 未命中數 1
使用記憶體225.2Kb
opcache第一次測試
吞吐率提升到49.11rps,總耗時20.361 s,每個請求耗時下降到203.612 ms
在phpinfo中可查看opcache的命中數量情況
命中數量已達到43957,記憶體使用量2.31Mb。
opcache第二次測試
吞吐率提升到47.87rps,總耗時20.888 s,每個請求耗時下降到208.882 ms
opcache之後的兩次壓測資料變化不大,每個請求耗時在1ms差距內,吞吐率也在1~2 rps
但與之前未啟用opcache時,總耗時少了4 ~ 6 s,每個請求耗時少了40 ~ 60 ms。吞吐率也提升了 8%。
這都是在一行代碼未改的情況下有效效能提升。
 
php檔案被編譯為位元組碼進行記憶體緩衝,如果在產生環境中,代碼和內容變數都是比較固定的
緩衝起來的內容就可以高速的返回,使用者會得到較快的響應。
但是在本地開發是,建議不要開啟opcache,否則就得不到最新的值

例如:

<?php
 header('Content-type:text/html; charset=utf-8');
 
 $str = 'abc';
 echo $str; // 輸出abc
?>


賦予$str 一個新的值

<?php
 header('Content-type:text/html; charset=utf-8');
 
 $str = 'new abc';
 echo $str; // 輸出的還是 abc
?>

這是因為$str 已經被編譯為位元組碼了,再次訪問時,記憶體裡面還是可以找到對應的緩衝,就沒有進行重新編譯,返回的值也就還是之前的值 abc

不過,opcache有一個參數可以用來設定緩衝時間長度


opcache.force_restart_timeout (default "180")

預設時間為180秒,還是建議本地不用開啟opcache

 

注意:官方給了一個Note,如果opcache要與xdebug同時載入,那麼opcache需要在xdebug之前進行載入。

但是我本地測試了一下,xdebug先載入,再載入opcache,也正常啟動了,xdebug,opcache都載入成功,opcache緩衝也正常。

不過還是按照官方的建議來安裝載入,否則可能會出現奇怪的錯誤吧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.