php中opcode緩存

1、什麼是opcode緩存

  1. 當一個 PHP 文件被解釋執行的時候,首先是被編譯成名爲 opcode (CPU 專用的機器語言指令)的中間代碼,而後才被底層的虛擬機執行。 若是PHP文件沒有被修改過,opcode 始終是同樣的。這就意味着編譯步驟白白浪費了 CPU 的資源。
  2. 此時 opcode 緩存就派上用場了。經過將 opcode 緩存在內存中,它能防止冗餘的編譯步驟,而且在下次調用執行時獲得重用。通常執行過程是先檢查文件的簽名(signature)或者修改時間,以防文件有改動。
  3. Opcode cache的目地是避免重複編譯,減小CPU和內存開銷。
  4. opcode 緩存一般都可以大幅度地提高應用程序的執行速度。PHP 5.5 之後的全部版本都內置了一個 opcode 緩存工具,叫作 Zend OPcache。 根據你所使用的 PHP 安裝包/發行版的不一樣,通常狀況下是默認開啓的,請查看 opcache.enable phpinfo() 和 phpinfo() 輸出的信息確認是否已經開啓。早期的版本也能經過 PECL 擴展來安裝。

2、有哪些opcode緩存插件?

  1. Optimizer+(Optimizer+於2013年3月中旬更名爲Opcache,PHP 5.5集成Opcache,其餘的會不會消失?)、eAccelerator、xcache、APC …

3、爲何使用opcode緩存?

  1. 主要是爲了減小重複編譯,從而減小CPU和內存的開銷。
  2. 參考連接:https://www.cnblogs.com/JohnA...

4、opcache插件安裝

  1. 請參考:https://blog.jjonline.cn/linu...

5、劃重點

  1. opcode緩存主要是爲了減少CPU內存的開銷,下次面試的時候關於性能提高的點,記得說opcache~
  2. 使用opcache有一個缺點,就是更新了php代碼後可能不會立刻生效,由於opcache有個有效時間的設置,只有過時後纔會從新生成opcode不然還會沿用原來的緩存的opcode,這裏,提供三種思路解決這種問題:php

    (1)根據業務實際狀況,合理設置opcache的過時時間,也就是opcache.revalidate_freq值
    (2)本身寫一個php腳本,調用opcache_reset()函數重置全部opcache緩存字節碼,或者使用opcache_invalidate(PHPfileDir,true)重置指定php文件的緩存字節碼。
    (3)最簡單粗暴的方法,可當即生效的方式,就是直接重啓php-fpm(nginx fast-cgi模式)或apache(apache-handler模式)。
相關文章
相關標籤/搜索