探讨PHP使用eAccelerator的API开发详解


Posted in PHP onJune 09, 2013

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)

下面有部分网友翻译后的接口说明:
eaccelerator_put($key, $value, $ttl=0)
  将 $value 以 $key 为键名存进缓存(php4下支持对像类型,看源码好像zend2里不支持了),$ttl 是这个缓存的生命周期,单位是秒,省略该参数或指定为 0 表示不限时,直到服务器重启清空为止。eaccelerator_get($key)
  根据 $key 从缓存中返回相应的 eaccelerator_put() 存进去的数据,如果这项缓存已经过期或不存在那么返回值是 NULL
eaccelerator_rm($key)
  根据 $key 移除缓存
eaccelerator_gc()
  移除清理所有已过期的 key
eaccelerator_lock($key)
  为 $key 加上锁定操作,以保证多进程多线程操作时数据的同步。需要调用 eaccelerator_unlock($key) 来释放这个锁或等待程序请求结束时自动释放这个锁。
  例如:
  <?php
    eaccelerator_lock(“count”);
    eaccelerator_put(“count”,eaccelerator_get(“count”)+1));
  ?>
eaccelerator_unlock($key)
  根据 $key 释放锁
eaccelerator_cache_output($key, $eval_code, $ttl=0)
  将 $eval_code 代码的输出缓存 $ttl 秒,($ttl参数同 eacclerator_put)
  例如:
  <?php eaccelerator_cache_output(‘test', ‘echo time(); phpinfo();', 30); ?>
eaccelerator_cache_result($key, $eval_code, $ttl=0)
  将 $eval_code 代码的执行结果缓存 $ttl 秒,($ttl参数同 eacclerator_put),类似 cache_output
  例如:
  <?php eaccelerator_cache_result(‘test', ‘ time() . “Hello”;', 30); ?>
eaccelerator_cache_page($key, $ttl=0)
  将当前整页缓存 $ttl 秒。
  例如:
  <?php
    eaccelerator_cache_page($_SERVER['PHP_SELF'].'?GET='.serialize($_GET),30);
    echo time();
    phpinfo();
  ?>
eaccelerator_rm_page($key)
  删除由  eaccelerator_cache_page() 执行的缓存,参数也是 $key

2、PHP代码中使用eAccelerator加速
另外,在PHPCMS里面已经集成了对eAccelerator的支持,下面是一段来自PHPCMS里面的代码
class cache
{
    function __construct()
    {
    }    function cache()
    {
        $this->__construct();
    }
    function get($name)
    {
        return eaccelerator_get($name);
    }
    function set($name, $value, $ttl = 0)
    {
        eaccelerator_lock($name);
        return eaccelerator_put($name, $value, $ttl);
    }
    function rm($name)
    {
        return eaccelerator_rm($name);
    }
    function clear()
    {
        return eaccelerator_gc();
    }
}

PHP 相关文章推荐
国内php原创论坛
Oct 09 PHP
PHP获取文件绝对路径的代码(上一级目录)
May 29 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
Jun 21 PHP
php采集文章中的图片获取替换到本地(实现代码)
Jul 08 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
Aug 06 PHP
删除html标签得到纯文本可处理嵌套的标签
Apr 28 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 PHP
PHP实现抽奖功能实例代码
Jun 30 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 #PHP
探讨捕获php错误信息方法的详解
Jun 09 #PHP
使用迭代器 遍历文件信息的详解
Jun 08 #PHP
PHP在不同页面间传递Json数据示例代码
Jun 08 #PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 #PHP
探讨:使用XMLSerialize 序列化与反序列化
Jun 08 #PHP
解析PHP自带的进位制之间的转换函数
Jun 08 #PHP
You might like
PHP获取网卡地址的代码
2008/04/09 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
PHP对象实例化单例方法
2017/01/19 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
Prototype Function对象 学习
2009/07/12 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
Javascript学习指南
2014/12/01 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
玩转python爬虫之cookie使用方法
2016/02/17 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
python如何将多个PDF进行合并
2019/08/13 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
python 多进程队列数据处理详解
2019/12/23 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
电子商务专业自我鉴定
2013/12/18 职场文书
室内设计专业自荐信
2014/05/31 职场文书
党校个人总结
2015/03/04 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书