使用 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 相关文章推荐
一个odbc连mssql分页的类
Oct 09 PHP
E路文章系统PHP
Dec 11 PHP
PHP教程 基本语法
Oct 23 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
preg_match_all使用心得分享
Jan 31 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
Mar 07 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
php微信公众账号开发之前五个坑(一)
Sep 18 PHP
PHP+mysql防止SQL注入的方法小结
Apr 27 PHP
PHP观察者模式实例分析【对比JS观察者模式】
May 22 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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
example1.php
2006/10/09 PHP
PHP一些有意思的小区别
2006/12/06 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
浅析php中三个等号(===)和两个等号(==)的区别
2013/08/06 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
理解javascript回调函数
2014/12/28 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
jQuery动态添加
2016/04/07 Javascript
JS hashMap实例详解
2016/05/26 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
进一步理解Python中的函数编程
2015/04/13 Python
python try except 捕获所有异常的实例
2018/10/18 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
详解django中Template语言
2020/02/22 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
跟单文员的岗位职责
2013/11/14 职场文书
家居设计专业个人自荐信范文
2013/11/26 职场文书
财务会计专业推荐信
2013/11/30 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
校长个人总结
2015/03/03 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python