探讨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 单引号与双引号的区别
Nov 24 PHP
PHP5中虚函数的实现方法分享
Apr 20 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 PHP
php语言中使用json的技巧及json的实现代码详解
Oct 27 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
Nov 30 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
thinkPHP中_initialize方法实例分析
Dec 05 PHP
php 访问oracle 存储过程实例详解
Jan 08 PHP
关于PHP通用返回值设置方法
Mar 31 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 23 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程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
2014/06/24 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
js文本框输入内容智能提示效果
2015/12/02 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
python生成指定长度的随机数密码
2014/01/23 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
python中的数据结构比较
2019/05/13 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
django在开发中取消外键约束的实现
2020/05/20 Python
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
建筑工程自我鉴定
2013/10/18 职场文书
送货司机岗位职责
2013/12/11 职场文书
求职信的七个关键技巧
2014/02/05 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
水电施工员岗位职责
2015/04/11 职场文书
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL