探讨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 相关文章推荐
JS实现php的伪分页
May 25 PHP
两级联动select刷新后其值保持不变的实现方法
Jan 27 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
Jun 12 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
Jul 28 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
Oct 21 PHP
Symfony2学习笔记之控制器用法详解
Mar 17 PHP
PHP 无限级分类
May 04 PHP
Yii框架实现图片上传的方法详解
May 20 PHP
PHP CURL与java http使用方法详解
Jan 26 PHP
PHP连接sftp并下载文件的方法教程
Aug 26 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
Oct 24 PHP
php模拟实现斗地主发牌
Apr 22 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常用Output和ptions/Info函数集介绍
2013/06/19 PHP
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
JavaScript之WebSocket技术详解
2016/11/18 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
原生js二级联动效果
2017/06/20 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
Python实现的密码强度检测器示例
2017/08/23 Python
python3中property使用方法详解
2019/04/23 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
python Gabor滤波器讲解
2020/10/26 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
见习期自我鉴定
2013/11/07 职场文书
如何客观的进行自我评价
2013/12/17 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
教师节祝酒词
2015/08/11 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
golang正则之命名分组方式
2021/04/25 Golang
对象析构函数__del__在Python中何时使用
2022/03/22 Python
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL