亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 8349 | 回復: 0
打印 上一主題 下一主題

給PHP加速,eAccelerator配置和使用指南 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-06-17 13:31 |只看該作者 |倒序瀏覽

本文由Michael原創(chuàng)和整理,轉載請保留出處!
http://www.toplee.com/blog/?p=100
Trackback URL:
http://www.toplee.com/blog/wp-trackback.php?p=100
對于本文中出現(xiàn)的錯誤導致您的損失,Michael不承擔責任。
前一段時間完成了服務器從FreeBSD4.10到6.1的升級,同時把PHP也升級到了最新的PHP5.1.4,Apache也升級到了最新的
Apache2.2,為了更好的提高系統(tǒng)的性能,考慮對PHP再進行一些優(yōu)化,前兩年接觸過MMCache和eAccelerator,尤其對
eAccelerator非常喜歡,這次優(yōu)化也選擇了它,下面整理一些文檔和大家分享。
目錄:
一、eAccelerator介紹
1、背景
2、原理
二、安裝和配置
1、支持平臺
2、系統(tǒng)要求
3、安裝
4、php.ini文件配置
5、驗證安裝
三、使用eAccelerator開發(fā)PHP代碼
1、API文檔和接口說明
2、開發(fā)范例
四、附錄和參考資料
一、eAccelerator介紹
1、背景
eAccelerator
是一個免費開源的PHP加速、優(yōu)化、編譯和動態(tài)緩存的項目,它可以通過緩存PHP代碼編譯后的結果來提高PHP腳本的性能,使得一向很復雜和離我們很遠的
PHP腳本編譯問題完全得到解決。通過使用eAccelerator,可以優(yōu)化你的PHP代碼執(zhí)行速度,降低服務器負載,可以提高PHP應用執(zhí)行速度最高
達10倍。
eAccelerator 項目誕生于2004年,當時它是作為
Turck MMCache

目的一個分支提出并投入開發(fā)的。 Turck MMCache 由 Dmitry Stogov
開發(fā),是個非常優(yōu)秀的PHP內存緩存加速系統(tǒng),如今仍然有很大部分 eAccelerator
的代碼應用到該項目中,目前該項目有很長時間沒有更新了,對于最新的PHP5.x的支持還未推出。
2、原理
eAccelerator
通過把經(jīng)過編譯后的PHP代碼緩存到共享內存中,并在用戶訪問的時候直接調用從而起到高效的加速作用。它的效率非常高,從創(chuàng)建共享內存到查找編譯后的代碼
都在非常短的時間內完成,對于不能緩存到共享內存中的文件和代碼,eAccelerator還可以把他們緩存到系統(tǒng)磁盤上。
eAccelerator
同樣還支持PHP代碼的編譯和解釋執(zhí)行,你可以通過encoder.php腳本來對php代碼進行編譯達到保護代碼的目的,經(jīng)過編譯后的代碼必須運行在安
裝了eAccelerator的環(huán)境下。eAccelerator編譯后的代碼不能被反編譯,它不象其他一些編譯工具那樣可以進行反編譯,這將使得代碼更
加安全和高效。
二、eAccelerator安裝配置
1、支持平臺
由于aAccelerator提供了大部分基于共享內存的API,所以在*nix的平臺上將得到更好的支持,雖然也發(fā)布了基于windows平臺的
binary版本,但我在這里就只提供基于*nix平臺的配置和說明,目前可以支持的平臺包括Linux, FreeBSD, OpenBSD,
Mac OS X, Solaris, AIX en HP-UX。
2、系統(tǒng)要求
php4 or php5
autoconf
automake
libtool
m4
eAccelerator 只支持使用 mod_php 或者 fastcgi mode 安裝的PHP
3、安裝
先去eAccelerator官方下載最新版的源碼包:
eaccelerator-0.9.5-beta.tar.bz2
#tar -zxvf ./eaccelerator-0.9.5-beta2.tar.bz2
#cd eaccelerator-0.9.5-beta2
#export PHP_PREFIX="/usr/local" (把PHP安裝目錄導入到環(huán)境變量,F(xiàn)reeBSD默認是/usr/local)
#$PHP_PREFIX/bin/phpize
#./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
#make
#make install
4、ini文件配置
安裝完成,下面開始配置php.ini文件,eAccelerator提供了兩種配置和調用方式,分別如下。
安裝為 Zend extension 模式:
zend_extension="/usr/local/lib/php/20050922/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"
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"
如果你使用了thread safe模式安裝的PHP,你必須使用 “zend_extension_ts” 替換第一行的 “zend_extension”.
安裝為 PHP extension 模式:(這是大部分采用的方式)
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"
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"
有關php.ini文件的詳細配置說明,請參照源碼目錄的README文檔或者訪問官方文檔:
ini setting
完成安裝配置后,我們最后要創(chuàng)建緩存目錄
#mkdir /tmp/eaccelerator
#chmod 777 /tmp/eaccelerator
5、驗證安裝結果
通過瀏覽器訪問您的phpinfo()頁面或者運行 php -i 得到php配置信息,里面如果看到類似下面的信息就表示安裝成功了。
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
    with eAccelerator v0.9.5-beta2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
我的機器上同時還安裝了Zend Optimizer3.0.1,所以看到的信息如下:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
    with eAccelerator v0.9.5-beta2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
    with Zend Extension Manager v1.0.10, Copyright (c) 2003-2006, by Zend Technologies
    with Zend Optimizer v3.0.1, Copyright (c) 1998-2006, by Zend Technologies
如果你打開了eAccelerator的debug選項,可以從日志中看到類似下面的信息
#tail /var/log/httpd/eAccelerator_log
EACCELERATOR hit: "/var/www/toplee.com/blog/index.php"
EACCELERATOR hit: "/var/www/toplee.com/blog/wp-blog-header.php"
EACCELERATOR hit: "/var/www/toplee.com/blog/wp-config.php"
EACCELERATOR hit: "/var/www/toplee.com/blog/wp-settings.php"
EACCELERATOR hit: "/var/www/toplee.com/blog/wp-content/plugins/wp-cache/wp-cache-phase1.php"
...
以上信息表示文件都得到了緩存和命中。
至此,我們就完成了全部的安裝和配置,好好享受eAccelerator帶給你的驚喜吧,根據(jù)Michael的測試,效果的確相當?shù)暮谩?br /> 三、在PHP中可以使用eAccelerator的API開發(fā)
1、API和文檔說明:
eAccelerator提供了便捷便捷而又穩(wěn)定的本機緩存實現(xiàn)方式,由于大部分代碼實現(xiàn)基于共享內存,所以只能在*nix平臺中使用,Windows平臺Michael就暫時不知道何時有這方面的支持了。
eAccelerator提供如下的API接口和文件:(下述文件均在源碼包的doc/php/目錄下)
文件列表:
cache.php
dasm.php
encoder.php
info.php
loader.php
session.php
shared_memory.php
接口列表:
array eaccelerator_cached_scripts ()
void eaccelerator_cache_output (string $key, string $eval_code, [int $ttl = 0])
void eaccelerator_cache_page (string $key, [int $ttl = 0])
void eaccelerator_cache_result (string $key, string $code, [int $ttl = 0])
void eaccelerator_caching (boolean $flag)
void eaccelerator_clean ()
void eaccelerator_clear ()
array eaccelerator_dasm_file (mixed $filename)
mixed eaccelerator_encode (mixed $src, [mixed $prefix = ''], [string $pre_content = ''], [string $post_content = ''])  
void eaccelerator_gc ()
mixed eaccelerator_get (string $key)  
array eaccelerator_info ()
array eaccelerator_list_keys ()
void eaccelerator_load ()
boolean eaccelerator_lock (string $key)
void eaccelerator_optimizer (boolean $flag)  
void eaccelerator_purge ()
boolean eaccelerator_put (string $key, mixed $value, [int $ttl = 0])
array eaccelerator_removed_scripts ()
boolean eaccelerator_rm (string $key)
void eaccelerator_rm_page (string $key)  
boolean eaccelerator_set_session_handlers ()
boolean eaccelerator_unlock (string $key)
有關上述文檔詳細說明請參考官方文檔:
API Documents
下面有部分網(wǎng)友翻譯后的接口說明:
eaccelerator_put($key, $value, $ttl=0)
  將 $value 以 $key 為鍵名存進緩存(php4下支持對像類型,看源碼好像zend2里不支持了),$ttl 是這個緩存的生命周期,單位是秒,省略該參數(shù)或指定為 0 表示不限時,直到服務器重啟清空為止。

eaccelerator_get($key)
  根據(jù) $key 從緩存中返回相應的 eaccelerator_put() 存進去的數(shù)據(jù),如果這項緩存已經(jīng)過期或不存在那么返回值是 NULL

eaccelerator_rm($key)
  根據(jù) $key 移除緩存

eaccelerator_gc()
  移除清理所有已過期的 key

eaccelerator_lock($key)
  為 $key 加上鎖定操作,以保證多進程多線程操作時數(shù)據(jù)的同步。需要調用 eaccelerator_unlock($key) 來釋放這個鎖或等待程序請求結束時自動釋放這個鎖。
  例如:
  
    eaccelerator_lock("count");
    eaccelerator_put("count",eaccelerator_get("count")+1));
  ?>

eaccelerator_unlock($key)
  根據(jù) $key 釋放鎖

eaccelerator_cache_output($key, $eval_code, $ttl=0)
  將 $eval_code 代碼的輸出緩存 $ttl 秒,($ttl參數(shù)同 eacclerator_put)
  例如:
   eaccelerator_cache_output('test', 'echo time(); phpinfo();', 30); ?>

eaccelerator_cache_result($key, $eval_code, $ttl=0)
  將 $eval_code 代碼的執(zhí)行結果緩存 $ttl 秒,($ttl參數(shù)同 eacclerator_put),類似 cache_output
  例如:
   eaccelerator_cache_result('test', ' time() . "Hello";', 30); ?>

eaccelerator_cache_page($key, $ttl=0)
  將當前整頁緩存 $ttl 秒。
  例如:
  
    eaccelerator_cache_page($_SERVER['PHP_SELF'].'?GET='.serialize($_GET),30);
    echo time();
    phpinfo();
  ?>

eaccelerator_rm_page($key)
  刪除由  eaccelerator_cache_page() 執(zhí)行的緩存,參數(shù)也是 $key
2、PHP代碼中使用eAccelerator加速
下面有一個測試的代碼,你可以測試一下eAccelerator強大的威力:(該代碼在 cli 模式下可能無效)
class test_cache {
  var $pro = 'hello';

  function test_cache() {
    echo "Object Created!
\n";
  }
  function func() {
    echo ', the world!';
  }
  function now($t) {
    echo date('Y-m-d H:i:s', $t);
  }
}

$tt = eaccelerator_get("test_tt");
if (!$tt)
{
  $tt = new test_cache;
  eaccelerator_put("test_tt", $tt);
  echo "no cached!
\n";
}
else {
  echo "cached
\n";
}

echo $tt->pro;
$tt->func();
$tt->now(time() + 86400);
?>
另外,據(jù)說在著名的vBulletin 3.60Beta版里面已經(jīng)集成了對eAccelerator的支持,下面是一段來自vBulletin里面的代碼
// #############################################################################
// eAccelerator

/**
* Class for fetching and initializing the vBulletin datastore from eAccelerator
*
* @package    vBulletin
* @version    $Revision: 0.1 $
* @date        $Date: 2005/06/12 13:14:18 $
*/
class vB_Datastore_eAccelerator extends vB_Datastore
{
    /**
    * Fetches the contents of the datastore from eAccelerator
    *
    * @param    array    Array of items to fetch from the datastore
    *
    * @return    void
    */
    function fetch($itemarray)
    {
        if (!function_exists('eaccelerator_get'))
        {
            trigger_error("eAccelerator not installed", E_USER_ERROR);
        }

        foreach ($this->defaultitems AS $item)
        {
            $this->do_fetch($item);
        }

        if (is_array($itemarray))
        {
            foreach ($itemarray AS $item)
            {
                $this->do_fetch($item);
            }
        }

        $this->check_options();

        // set the version number variable
        $this->registry->versionnumber =& $this->registry->options['templateversion'];
    }

    /**
    * Fetches the data from shared memory and detects errors
    *
    * @param    string    title of the datastore item
    *
    * @return    void
    */
    function do_fetch($title)
    {
        $data = eaccelerator_get($title);
        if ($data === null)
        { // appears its not there, lets grab the data, lock the shared memory and put it in
            $data = '';
            $dataitem = $this->dbobject->query_first("
                SELECT title, data FROM " . TABLE_PREFIX . "datastore
                WHERE title = '" . $this->dbobject->escape_string($title) ."'
            ");
            if (!empty($dataitem['title']))
            {
                $data =& $dataitem['data'];
                $this->build($dataitem['title'], $dataitem['data']);
            }
        }
        $this->register($title, $data);
    }




    /**
    * Updates the appropriate cache file
    *
    * @param    string    title of the datastore item
    *
    * @return    void
    */
    function build($title, $data)
    {
        if (!function_exists('eaccelerator_put'))
        {
            trigger_error("eAccelerator not installed", E_USER_ERROR);
        }
        eaccelerator_lock($title);
        eaccelerator_put($title, $data);
        eaccelerator_unlock($title);
    }
}
四、附錄和參考資料
eAccelerator 官方網(wǎng)站 :http://eaccelerator.net
Websites using eAccelerator ?
  • http://www.advfn.com/ (2006/03/03) Advanced Financial Network, serves over 7 million page hits per day.
  • http://www.domaincity.co.uk/ (2005/01/29) Andrew Hutchings - Linux
    Guru - Just a quick message to say we are now using eaccelerator as a
    replacement for mmcache on 2 of our 3 node round robin clusters,
    2.5million hits per day. We will be doubling this in the next few week,
    as well as implementing new clusters.
  • http://www.ets-online.de/ (2005/02/07) Denny Reeh - System
    Developer - The e/t/s didactic media provides an elearning server
    (Distance Learning System) written in PHP. We are hosting the systems
    for our customers mainly by ourself. So we have 5 live-servers
    (freebsd, apache2, php4, eaccelerator) with 5.5 million hits per month.
    First without eAccelerator we should have installed more servers for
    good performance and secondly we improve the customer convenience by
    quartering the medium response time of a script.
  • http://www.gorgoyle.com/ (2005/08/03) Gorgoyle.com is Yet Another
    Debian Personal Server with just a few lost Internet wanderers passing
    by, powered by a glorious Celeron 433 that needed some fresh air… With
    eAccelerator the result is quite impressive: users say the server speed
    is now 10000% higher (no joke!) So thank you all and keep up the good
    work!!! Server: eAccelerator 0.9.5 beta 1 Apache/2.0.55 (Debian)
    mod_python/3.1.3 Python/2.3.5 PHP/4.4.2-1 mod_ssl/2.0.55 OpenSSL/0.9.8a
    mod_perl/2.0.2
  • http://www.mafia-inc.de/ (2005/05/24) The Mafia-Incorporated is a
    succesfull Browser game with around 2.500.000 page impressions each day
    and over 5000 users. Server: PHP Version 4.3.10-9, eAccelerator 0.9.2a,
    Debian , Apache 2.0.53
  • http://www.mondespersistants.com/ (2005/01/07) An other game
    oriented french website with 6 000 000 pageloads monthly.
    http://guildes.mondespersistants.com is a full PHP5 oo development.
    Theses websites are running under freebsd / apache 1.3 / php 5.0.3 /
    eaccelerator 0.9.2
  • http://www.moviemaze.de/ (2005/12/09) Markus Ostertag - Movie Maze
    is a large german online-magazine with trailer, wallpaper, reviews,
    news and much more. Currently we use three servers (Suse & Debian
    with Apache 2, PHP4) with eAccelerator and provide more than 3TB data
    to ~1 Mio. users each month.
  • http://www.rtvslo.si (2005/01/04) The Slovenian National RTV
    Station and its news/misc portal with forums. Over 3500 users and more
    than 37000 forum messages in a year. Two round-robin servers for the
    masses, and an administrator server. 6 000 000 pageloads monthly.
  • http://www.shroomery.org/ (2006/03/28) A site about mushrooms and
    mycology, serving 20,000,000 pages per month. Web and database server
    are identical dual 64-bit Xeons with 4GB and SCSI RAID5 running Gentoo.
    eAccelerator help keep our page generation time under .1 second!

  • http://www.sourceforge.net/ (2005/04/25) SourceForge.net is
    the world’s largest Open Source software development web site, hosting
    more than 100,000 projects and over 1,000,000 registered users with a
    centralized resource for managing projects, issues, communications, and
    code. SourceForge.net has the largest repository of Open Source code
    and applications available on the Internet, and hosts more Open Source
    development products than any other site or network worldwide.
    SourceForge.net provides a wide variety of services to projects we
    host, and to the Open Source community. eAccelerator is used on the
    webserver cluster for their frontpage.
    Companies offering hosting with eAccelerator enabled ?
  • http://lylix.net/ (2006/04/29) Offering webhosting w/
    Apache/2.0.55, PHP 5.0.5, and eAccelerator 0.9.5 beta1 on Gentoo Linux
    servers. Also a provider of quality Virtual Private Server (VPS)
    hosting, including 32 and 64-bit platforms. Most VPS images have a
    pre-installed LAMP environment w/ eAccelerator installed and
    configured.
  • http://www.ulyssis.org A student organisation which provides shell and internet services for students at very cheap prices.

               
               
               

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/3514/showart_1967007.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP