使用 eAccelerator加速PHP代码的方法


Posted in PHP onSeptember 30, 2007

eAccelerator 真是一个好东西(它的前身是truck-mmcache)。 

简单来讲它是一套配合PHP(支持PHP5)运作的缓存系统,通过共享内存或磁盘文件方式交换数据。 

它被广为使用的是PHP源码“编码”(不太贴切的称为“加密”)和缓存PHP执行的中间码以加速。关于 eA 的安装使用的文章已经很多而且也很详细了,这次我想推荐的是用它辅助程序设计缓存,它提供了一组API如下: 

是一个非常便捷而又稳定的本机缓存实现方式,目前这部分设计似乎只支持于共享内存,所以只能用于 Unix -Like OS 了,windows的就没这个福气了。 

1. eaccelerator_put($key, $value, $ttl=0) 
  将 $value 以 $key 为键名存进缓存(php4下支持对像类型,看源码好像zend2里不支持了),$ttl 是这个缓存的生命周期,单位是秒,省略该参数或指定为 0 表示不限时,直到服务器重启清空为止。 

2. eaccelerator_get($key) 
  根据 $key 从缓存中返回相应的 eaccelerator_put() 存进去的数据,如果这项缓存已经过期或不存在那么返回值是 NULL 

3. eaccelerator_rm($key) 
  根据 $key 移除缓存 

4. eaccelerator_gc() 
  移除清理所有已过期的 key  

5. eaccelerator_lock($key) 
  为 $key 加上锁定操作,以保证多进程多线程操作时数据的同步。需要调用 eaccelerator_unlock($key) 来释放这个锁或等待程序请求结束时自动释放这个锁。 
  例如: 
  <?php 
    eaccelerator_lock("count"); 
    eaccelerator_put("count",eaccelerator_get("count")+1)); 
  ?> 

6. eaccelerator_unlock($key) 
  根据 $key 释放锁 

7. eaccelerator_cache_output($key, $eval_code, $ttl=0) 
  将 $eval_code 代码的输出缓存 $ttl 秒,($ttl参数同 eacclerator_put) 
   For Example: 
  <?php eaccelerator_cache_output('test', 'echo time(); phpinfo();', 30); ?> 

8. eaccelerator_cache_result($key, $eval_code, $ttl=0) 
  将 $eval_code 代码的执行结果缓存 $ttl 秒,($ttl参数同 eacclerator_put),类似 cache_output 
   For Example: 
  <?php eaccelerator_cache_result('test', ' time() . "Hello";', 30); ?> 

9. eaccelerator_cache_page($key, $ttl=0) 
  将当前整页缓存 $ttl 秒。 
  For Example: 
  <?php 
    eaccelerator_cache_page($_SERVER['PHP_SELF'].'?GET='.serialize($_GET),30); 
    echo time(); 
    phpinfo(); 
  ?> 

10. eaccelerator_rm_page($key) 
  删除由  eaccelerator_cache_page() 执行的缓存,参数也是 $key 

______________________________________________ 
(作个简单例子看看它的威力,注意在 cli 模式下可能无效!) 

<?phpclass 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);?>

PHP 相关文章推荐
利用php来自动调用不同服务器上的flash
Oct 09 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
Oct 04 PHP
PHP开发过程中常用函数收藏
Dec 14 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
php实现自动获取生成文章主题关键词功能的深入分析
Jun 03 PHP
php实现的简单美国商品税计算函数
Jul 13 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
详解PHP中的null合并运算符
Dec 30 PHP
PHP和MySql中32位和64位的整形范围是多少
Feb 18 PHP
利用php输出不同的心形图案
Apr 22 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 PHP
php微信开发之谷歌测距
Jun 14 PHP
实现php加速的eAccelerator dll支持文件打包下载
Sep 30 #PHP
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
Sep 30 #PHP
一些常用的php简单命令代码集锦
Sep 24 #PHP
php下实现伪 url 的超简单方法[转]
Sep 24 #PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 #PHP
56.com视频采集接口程序(PHP)
Sep 22 #PHP
从MySQL数据库表中取出随机数据的代码
Sep 05 #PHP
You might like
Php+SqlServer实现分页显示
2006/10/09 PHP
PHP Mysql编程之高级技巧
2008/08/27 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
php数组编码转换示例详解
2014/03/11 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
PHP多进程简单实例小结
2019/11/09 PHP
Javascript高级技巧分享
2014/02/25 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
在Python中操作字典之clear()方法的使用
2015/05/21 Python
Python字符串处理实现单词反转
2017/06/14 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
pandas 按照特定顺序输出的实现代码
2018/07/10 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
Python文件操作函数用法实例详解
2019/12/24 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
对标管理实施方案
2014/03/12 职场文书
机关作风建设心得体会
2014/10/22 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS