eAccelerator 配備(PHP代碼加速器)

來源:互聯網
上載者:User
eAccelerator 配置(PHP代碼加速器)


  eAccelerator是一個自由開放源碼php加速器,最佳化和動態內容緩衝,提高了php指令碼的緩衝效能,使得PHP指令碼在編譯的狀態下,對伺服器的開銷幾乎完全消除。 它還有對指令碼起最佳化作用,以加快其執行效率。使您的PHP程式碼執效率能提高1-10倍;

?

首先您要安裝好PHP,然後再來編譯安裝 eaccelerator,過程如下。
我們從官方下的版本是 eaccelerator-0.9.5.2.tar.bz2   
編譯安裝;   
# tar xvf eaccelerator-0.9.5.2.tar.bz2   
# cd cd eaccelerator-0.9.5.2   
# export PHP_PREFIX="/usr"   
# $PHP_PREFIX/bin/phpize   
# ./configure \   --enable-eaccelerator=shared \   --with-php-config=$PHP_PREFIX/bin/php-config   
# make   
# make install   
註:通過export 來設定php所在的安裝路徑變數,我的PHP是安裝在/usr目錄下,系統用redhat。其它系統如果預設安裝也大體差不多;如果不一樣,就自己指定一下;   
完成安裝後,eaccelerator.so模組位於 /usr/lib/php/extensions目錄中,您的系統如果和我不一樣,您自己應該安裝在哪了;  # echo "/usr/lib/php/extensions" > /etc/ld.so.conf   
# ldconfig   註:更新動態連結程式庫地址;   
修改設定檔;   
我們首先要修改;php.ini,然後重啟Apache;   
在php.ini檔案中,加入;
zend_extension="/usr/lib/php/extensions/eaccelerator.so" 註:模組的具體位置;   
eaccelerator.shm_size="16" 註:共用記憶體大小;   
eaccelerator.cache_dir="/home/eaccelerator" 註:緩衝目錄;   
eaccelerator.enable="1"   
eaccelerator.optimizer="1"   
eaccelerator.check_mtime="1"   
eaccelerator.debug="0"   
eaccelerator.filter=""   
eaccelerator.shm_max="0"   
eaccelerator.shm_ttl="0"   
eaccelerator.shm_prune_period="0"   
eaccelerator.shm_only="0"   
eaccelerator.compress="1"   
eaccelerator.compress_level="9"   註:其中,模組的具體位置必須正確,以您的系統為準;共用記憶體大小可以自己調整,感覺16M還是可以的,根據伺服器的情況,你自己調一下。
緩衝目錄可以自己指定,我們在這裡指定的是 /home目錄上的 eaccelerator 目錄,如果沒有,自己建立一個;許可權是0777;
以上的配置是把 eaccelerator 做為 Zend 的擴充模組來編譯的辦法。如果您的PHP是用安裝模式編譯的,要把 zend_extension改為zend_extension_ts 。
如果您是把 eaccelerator 做為 PHP的一個擴充,要用下面的配置 ;   
extension="eaccelerator.so"   
eaccelerator.shm_size="16"   
eaccelerator.cache_dir="/home/eaccelerator"   
eaccelerator.enable="1"   
eaccelerator.optimizer="1"   
eaccelerator.check_mtime="1"   
是不是生效了,您要查看 /home/eaccelerator 目錄中,當Apache伺服器啟動了,你隨便點幾個頁面,如果在這個目錄中,出現檔案了。那就是生效了。如果沒任何檔案,就要找原因了 ……   這兩個設定檔,是不是管用。要你自己根據情況來修改。
# mkdir /home/eaccelerator
# chmod 777 /home/eaccelerator   註:建立緩衝目錄池,許可權是777

?

?


eaccelerator.shm_size="32"

  eAccelerator 可以使用的共用記憶體的數量 (以兆為單位) . "0" 是指作業系統的預設值. 預設值是 "0".可根據伺服器的實際情況來調整,16,32,64,128都是可以的。

  eaccelerator.cache_dir="/home/php/tmp"

  這個目錄是給磁碟緩衝使用. eAccelerator 在這裡儲存預先編譯好的代碼, 進程資料, 內容以及使用者的自訂內容. 同樣的資料也能被儲存在共用記憶體中 (這樣可以提高訪問速度). 預設的設定是 "/tmp/eaccelerator".

  eaccelerator.enable="1"

  開啟或關閉 eAccelerator。"1" 為開啟,"0" 為關閉。預設值為 "1"。

  eaccelerator.optimizer="1"

  啟或關閉內部最佳化器,可以提升代碼執行速度。"1" 為開啟,"0" 為關閉。預設值為 "1"。

  eaccelerator.check_mtime="1"

  開啟或者關閉 PHP 的檔案修改檢查. "1" 是指開啟, "0" 是指關閉. 如果您在修改以後重新編譯 PHP 的檔案,那麼您應當設定為 "1". 預設值是 "1".

  eaccelerator.debug="0"

  開啟或關閉調試日誌記錄。"1" 為開啟,"0" 為關閉。預設值為 "0"。會將快取命中得記錄寫入日誌。

  eaccelerator.filter=""

  判斷哪些 PHP 檔案必須緩衝。您可以指定緩衝和不緩衝的檔案類型(如 "*.php *.phtml"等)

  如果參數以 "!" 開頭,則匹配這些參數的檔案被忽略緩衝。預設值為 "",即,所有 PHP 檔案都將被緩衝。

  eaccelerator.shm_max="0"

  當使用 " eaccelerator_put() " 函數時禁止其向共用記憶體中儲存過大的檔案。該參數指定允許儲存的最大值,單位:位元組 (10240, 10K, 1M)。"0" 為不限制。預設值為 "0"。

  eaccelerator.shm_ttl="0"

  當 eAccelerator 擷取新指令碼的共用記憶體大小失敗時,它將從共用記憶體中刪除所有在最後 "shm_ttl" 秒內沒有存取的指令碼緩衝。預設值為 "0",即:不從共用內春中刪除任何快取檔案。

  eaccelerator.shm_prune_period="0"

  當 eAccelerator 擷取新指令碼的共用記憶體大小失敗時,他將試圖從共用記憶體中刪除早於"shm_prune_period" 秒的緩衝指令碼。預設值為 "0",即:不從共用內春中刪除任何快取檔案。

  eaccelerator.shm_only="0"

  允許或禁止將已編譯指令碼緩衝在磁碟上。該選項對 session 資料和內容快取無效判定。預設值為 "0",即:使用磁碟和共用記憶體進行緩衝。

  eaccelerator.compress="1"

  允許或禁止壓縮內容緩衝。預設值為 "1",即:允許壓縮。

  eaccelerator.compress_level="9"

  指定內容緩衝的壓縮等級。預設值為 "9",為最高等級。

  eaccelerator.keys = "disk_only"

  eaccelerator.session = "disk_only"

  eaccelerator.content = "disk_only"

  設定內容緩衝的存放的地方,可以設定為:

  shm_and_disk 在共用快取和硬碟(預設值)

  shm 預設存在共用記憶體,如果共用記憶體已滿或大小超過 "eaccelerator.shm_max" 的值,就存到硬碟

  shm_only 只存放在共用記憶體

  disk_only 只存放在硬碟

  none 不快取資料

  eaccelerator.allowed_admin_path = "/var/www/html/web/eaccelerator"

  這是控制台的地址

  安裝包裡有個control.php,你把它複製到網站的任意目錄,可以用它查看和管理,這個必須指定,否則查看緩衝內容的時候會出錯

  最後,來看一下我的 eAccelerator 設定

  ; eaccelerator

  [eaccelerator]

  zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"

  eaccelerator.shm_size="128"

  eaccelerator.cache_dir="/tmp/eaccelerator"

  eaccelerator.enable="1"

  eaccelerator.optimizer="1"

  eaccelerator.check_mtime="1"

  eaccelerator.debug="0"

  eaccelerator.filter=""

  eaccelerator.shm_max="0"

  eaccelerator.shm_ttl="3600"

  eaccelerator.shm_prune_period="3600"

  eaccelerator.shm_only="0"

  eaccelerator.compress="1"

  eaccelerator.compress_level="9"

  eaccelerator.keys = "disk_only"

  eaccelerator.sessions = "disk_only"

  eaccelerator.content = "disk_only"

  eaccelerator.allowed_admin_path = "/var/www/html/web/eaccelerator"

  另外,再說下 eAccelerator 的安裝

  # wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2

  # tar -jxvf eaccelerator-0.9.6.tar.bz2

  # cd eaccelerator-0.9.6

  # /usr/local/php/bin/phpize

  # ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config

  # make && make install


-------------------------------------
open_basedir 設定後不能訪問的解決方案之一

Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s): (.:/tmp/) in Unknown on line 0

Fatal error: Can’t load /XX/index.php, open_basedir restriction. in Unknown on line 0

出現了很多次這樣的問題了,感覺都無從下手,總覺得與系統和php有關, 今天又出現了, 想來想去都覺得不奇怪, 後面開始重新編譯php, php的擴充都沒編譯,發現設定open_basedir的時候,卻沒有出錯^^^?? ,?? 從這個資訊覺得有些可以利用的,把自己方案所需的擴充都安裝進去,重啟apache的時候,卻發現有出現這個錯誤, 把php.ini中設定的擴充一個一個的關閉,開始排查,後面吧eaccelerator注釋掉後,重啟apache並沒有出現錯誤, 定位問題出現eaccelerator, 在用google查了下,發現eaccelerator 0.9.6後的版本跟以前的有些改變,把open_basedir給限制了,這時我們要把限制去掉才行

下載eaccelerator 0.9.6後先不要安裝,解包後找到eaccelerator.c這個檔案,開啟第1156行,這樣的:
if (PG(open_basedir) && php_check_open_basedir(realname TSRMLS_CC)) {
修改成:
if (PG(open_basedir) && php_check_open_basedir(file_handle->filename TSRMLS_CC)) {

修改後在進行編譯,就ok了

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.