`

php加速器 eAccelerator配置和使用指南

 
阅读更多

一、eAccelerator介绍

1、背景
eAccelerator 是一个免费开源的PHP加速、优化、编译和动态缓存的项目,它可以通过缓存PHP代码编译后的结果来提高PHP脚本的性能,使得一向很复杂和离我们很远的 PHP脚本编译问题完全得到解决。通过使用eAccelerator,可以优化你的PHP代码执行速度,降低服务器负载,可以提高PHP应用执行速度最高 达10倍。

eAccelerator 项目诞生于2004年,当时它是作为 Turck MMCache 项 目的一个分支提出并投入开发的。 Turck MMCache 由 Dmitry Stogov 开发,是个非常优秀的PHP内存缓存加速系统,如今仍然有很大部分 eAccelerator 的代码应用到该项目中,目前该项目有很长时间没有更新了,对于最新的PHP5.x的支持还未推出。

2、原理
eAccelerator 通过把经过编译后的PHP代码缓存到共享内存中,并在用户访问的时候直接调用从而起到高效的加速作用。它的效率非常高,从创建共享内存到查找编译后的代码 都在非常短的时间内完成,对于不能缓存到共享内存中的文件和代码,eAccelerator还可以把他们缓存到系统磁盘上。

eAccelerator 同样还支持PHP代码的编译和解释执行,你可以通过encoder.php脚本来对php代码进行编译达到保护代码的目的,经过编译后的代码必须运行在安 装了eAccelerator的环境下。eAccelerator编译后的代码不能被反编译,它不象其他一些编译工具那样可以进行反编译,这将使得代码更 加安全和高效。

二、eAccelerator安装配置

1、支持平台
由于aAccelerator提供了大部分基于共享内存的API,所以在*nix的平台上将得到更好的支持,虽然也发布了基于windows平台的 binary版本,但我在这里就只提供基于*nix平台的配置和说明,目前可以支持的平台包括Linux, FreeBSD, OpenBSD, Mac OS X, Solaris, AIX en HP-UX。

2、系统要求
php4 or php5
autoconf
automake
libtool
m4
eAccelerator 只支持使用 mod_php 或者 fastcgi mode 安装的PHP

 

3、安装
先去eAccelerator官方下载最新版的源码包:http://sourceforge.net/projects/eaccelerator/

#tar -zxvf ./eaccelerator-0.9.5-beta2.tar.bz2
#cd eaccelerator-0.9.5-beta2
#export PHP_PREFIX="/usr/local" (把PHP安装目录导入到环境变量,FreeBSD默认是/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

完成安装配置后,我们最后要创建缓存目录

 

#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

 

如果你打开了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带给你的惊喜吧,根据Michael的测试,效果的确相当的好。

 

三、在PHP中可以使用eAccelerator的API开发

1、API和文档说明:

eAccelerator提供了便捷便捷而又稳定的本机缓存实现方式,由于大部分代码实现基于共享内存,所以只能在*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

 

2、PHP代码中使用eAccelerator加速

下面有一个测试的代码,你可以测试一下eAccelerator强大的威力:(该代码在 cli 模式下可能无效)

 

<?php
class test_cache {
  var $pro = 'hello';
 
  function test_cache() {
    echo "Object Created!<br>\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!<br>\n";
}
else {
  echo "cached<br>\n";
}
 
echo $tt->pro;
$tt->func();
$tt->now(time() + 86400);
?>

 

另外,据说在著名的vBulletin 3.60Beta版里面已经集成了对eAccelerator的支持,下面是一段来自vBulletin里面的代码

<?php
// #############################################################################
// 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 官方网站 :http://eaccelerator.net

 

分享到:
评论

相关推荐

    php缓存加速器eAccelerator配置详解.doc

    【PHP缓存加速器eAccelerator配置详解】 一、eAccelerator介绍 1、背景 eAccelerator是一款免费且开源的PHP加速器,它旨在提升PHP脚本的执行效率,通过缓存编译后的PHP代码,减少服务器负载。eAccelerator的出现...

    eAccelerator支持php5.3.5加速器及配置

    **eAccelerator** 是一个开源的、高性能的 PHP 扩展,主要功能是为 PHP 应用程序提供缓存和优化。它通过编译并存储 PHP 脚本的 Zend 指令集来提高执行速度,从而显著提升 PHP 程序的运行效率。在 PHP 5.3.5 版本上,...

    在linux上建立PHP的加速器eAccelerator.pdf

    正确配置和使用eAccelerator,可以显著减少服务器的负载,提升PHP应用的执行速度,从而优化整个Web服务器的性能。在Linux操作系统中,eAccelerator因其开源、高效的特点,成为了许多开发者和系统管理员优化PHP性能的...

    eaccelerator for php5217加速器

    eaccelerator加速器,eaccelerator版本有0952 0953 0960 0961 喜欢用哪个就用哪个,里面有包含thread safe(线程安全版)eaccelerator_ts.dll 和no thread safe(非线程安全版),附带配置示例和eaccelerator管理文件...

    php加速器,加速您的PHP程序

    eAccelerator是一款开源的PHP加速器、缓存器和优化器,旨在提高PHP应用的执行速度和效率。它通过将PHP代码编译为共享内存中的字节码,从而减少了PHP解释器对代码的解析和编译时间,进而显著提升网站性能。此外,...

    eaccelerator for 5.2.17 discuz x2.5

    eaccelerator是一款开源的PHP加速器、缓存器和代码优化工具,其主要目的是提升PHP应用程序的性能,减少服务器负载。 【描述】"eaccelerator for 5.2.17 Discuz X2.5" 的描述简洁明了,表明这个特定版本的...

    php加速文件eaccelerator.dll

    eAccelerator0953_5.2.10.dll

    php加速器eAccelerator的配置参数、API详解

    eAccelerator 是一个开源的 PHP 加速器,主要功能包括代码优化、编码器、以及动态内容缓存。其核心工作原理是在编译时将 PHP 脚本缓存起来,这样可以大幅减少系统开销,提高 PHP 脚本的执行性能,达到降低服务器负载...

    PHP缓存加速工具 eAccelerator v0.9.6.1 开源版.rar

    eAccelerator专门为PHP开发,是目前较为主流的可使用在PHP之中的缓存加速工具. eAccelerator的主要功能: 1. 缓存PHP文件的执行代码:在被缓存的代码再次被调用时,将直接从内存读取,从而在很大程度了PHP运行的...

    eAccelerator0953_5.2.10.dll

    DLL文件包含了程序运行所需的特定功能,eAccelerator0953_5.2.10.dll可能是用来加速和优化PHP脚本执行的组件,通过缓存编译后的PHP代码来减少处理时间。 【标签】"免费"表示这个软件组件是免费提供的,用户无需支付...

    Memcache-eAccelerator-APC-Xcache-Redis 五种php缓存加速器特点浅析.docx

    本文将对五种常见的PHP缓存加速器进行分析,包括Memcached、eAccelerator、APC(Alternative PHP Cache)、Xcache以及Redis,以帮助理解它们的特点和适用场景。 首先,Memcached是一个分布式内存对象缓存系统,常...

    eAccelerator.dll for php5.3.8 nts

    (笔者使用fast-cgi模式运行php,请根据自己的实际情况进行相关的改动和配置,本文附件提供php5.3.6VC9nts以及php5.2.17vc6nts(使用VC6.0编译)编译后的 eAccelerator v0.9.6.1下载 。) Php5.3.6(VC9 x86 Non Thread...

    eAccelerator for windows php 5.3.XX VC9 PHP加速模块下载

    eAccelerator for windows php v5.3.XX VC9 PHP加速模块下载, 这个东西是目前PHP加速最好用的缓存模块了, 这个是windows平台下使用的已经编译好的eAccelerator.dll 文件, TS 和NTS 2个版本.

Global site tag (gtag.js) - Google Analytics