摘要:緩存之緩存什么是緩存當解釋器完成對腳本代碼的分析后,便將他們聲稱可以直接運行的中間代碼,也成為操作碼。同時它還提供一些接口用于開發人員將用戶數據駐留在內存中,我們稱之為。
PHP緩存之Opcode緩存
什么是Opcode緩存?
當解釋器完成對腳本代碼的分析后,便將他們聲稱可以直接運行的中間代碼,也成為操作碼(Operate Code, Opcode)。Opcode cache的目的是避免重復編譯,減少CPU和內存的開銷。但是一般動態網站的性能瓶頸都在IO操作以及數據庫操作,那么Opcode緩存能夠帶來的優化效果是有限的。
Opcode緩存的原理是什么?
當請求PHP腳本時,會經歷以下幾個過程:
Zend引擎從文件系統讀取文件、掃面器詞典和表達式、解析文件、創建要執行的計算機代碼(Opcode),最后執行Opcode。每一次請求都會執行以上步驟,如果我們的PHP沒有變化,納悶Opcode也應該是沒有變化的,所以不必要每次都重新生成Opcode。根據這個原理,我們可以把Opcode緩存下來,再次訪問相同文件時,可以直接從Opcode執行文件,啟用Opcode后文件的執行流程如下:
有哪些PHP Opcode緩存插件?
Optimizer+(Optimizer+于2013年3月中旬改名為Opcache,PHP 5.5集成Opcache,其他的會不會消失?)、eAccelerator、xcache、APC …
使用APC實現Opcode緩存
APC提供兩種緩存功能,即緩存Opcode(目標文件),我們稱之為apc_compiler_cache。同時它還提供一些接口用于PHP開發人員將用戶數據駐留在內存中,我們稱之為apc_user_cache。我們這里主要討論apc_compiler_cache的配置。
下載地址:http://pecl.php.net/package/APC
最新版本為APC-3.1.6.tgz
wget http://pecl.php.net/get/APC-3.1.6.tgz tar -zxvf APC-3.1.6.tgz cd APC-3.1.6 /home/ad/php/bin/phpize ./configure --enable-apc --enable-apc-mmap --with-php-config=/home/ad/php/bin/php-config make make install
編輯php.ini,添加apc的配置
[apc] extension=apc.so apc.enabled=1 apc.shm_segments = 1 apc.shm_size = 128 apc.ttl = 0 apc.user_ttl = 7200 apc.num_files_hint = 1000 apc.write_lock=1 apc.stat = 0 apc.max_file_size=1M apc.filters = a.php,b.php apc.cache_by_default=1
配置說明:
apc.enabled 開啟apc 設置為0關閉,1為開啟 apc.shm_segments 共享內存塊數 apc.shm_size 共享內存大小,但是是M 那么顯然共享內存的總數就是apc.shm_segments*apc.shm_size apc.num_files_hint 允許多少個opcode被緩存 apc.stat 為1的時候會自動檢查opcode對應的php文件是否有更新,有更新的話會自動更新。設置為0的話就不會去檢查了這樣會提高apc的效率,但是要使php的修改生效的話就必須重啟apache了,或者使用函數apc_cache_clear()來清空緩存 apc.ttl opcode緩存的過期時間,設置為0表示不過期,如果不為0會檢查兩次請求之間的時間,如果時間大于設置值那么會更新opcode緩存 apc.write_lock 表示多個進程同時更新一份opcode緩存的時候那么只讓最先的一個生效,可以有效避免寫沖突 apc.max_file_size 超過設置值大小的文件不被緩存 apc.filters 需要特例的文件,多個文件用逗號(,)相隔 apc.filters 與 apc.cache_by_default結合使用, 當apc.cache_by_default為1時apc.filters文件不被緩存,當apc.cache_by_default為0時僅apc.filters文件被緩存
本文參考:
http://www.cnblogs.com/JohnAB...
http://www.cnblogs.com/Alight...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22351.html
摘要:緩存之緩存什么是緩存當解釋器完成對腳本代碼的分析后,便將他們聲稱可以直接運行的中間代碼,也成為操作碼。同時它還提供一些接口用于開發人員將用戶數據駐留在內存中,我們稱之為。 PHP緩存之Opcode緩存 什么是Opcode緩存? 當解釋器完成對腳本代碼的分析后,便將他們聲稱可以直接運行的中間代碼,也成為操作碼(Operate Code, Opcode)。Opcode cache的目的是...
摘要:一般執行過程是先檢查文件的簽名或者修改時間,以防文件有改動。緩存通常都能夠大幅度地提升應用程序的執行速度。二有哪些緩存插件于年月中旬改名為,集成,其他的會不會消失三為什么使用緩存主要是為了減少重復編譯,從而減少和內存的開銷。 一、什么是opcode緩存 當一個 PHP 文件被解釋執行的時候,首先是被編譯成名為 opcode (CPU 專用的機器語言指令)的中間代碼,然后才被底層的虛擬...
摘要:一般執行過程是先檢查文件的簽名或者修改時間,以防文件有改動。緩存通常都能夠大幅度地提升應用程序的執行速度。二有哪些緩存插件于年月中旬改名為,集成,其他的會不會消失三為什么使用緩存主要是為了減少重復編譯,從而減少和內存的開銷。 一、什么是opcode緩存 當一個 PHP 文件被解釋執行的時候,首先是被編譯成名為 opcode (CPU 專用的機器語言指令)的中間代碼,然后才被底層的虛擬...
摘要:什么是當解釋器完成對腳本代碼的分析后,便將它們生成可以直接運行的中間代碼,也稱為操作碼,。的目地是避免重復編譯,減少和內存開銷。這將帶來顯著的性能加速,通常特別是高流量和高并發量時降低了整體服務器的內存消耗,而且很少有缺點。 一、個人實踐發現opcache 最近為了應對雙十一期間高流量的沖擊,小編通過壓力測試去查找服務器性能瓶頸,發現100并發時,QPS并不是很高,但CPU和內存消耗特...
閱讀 1295·2021-11-23 09:51
閱讀 3399·2021-09-06 15:00
閱讀 987·2021-08-16 10:57
閱讀 1371·2019-08-30 12:46
閱讀 933·2019-08-29 12:22
閱讀 1604·2019-08-29 11:07
閱讀 3148·2019-08-26 11:23
閱讀 2980·2019-08-23 15:14