使用 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 相关文章推荐
如何实现给定日期的若干天以后的日期
Oct 09 PHP
PHP读写文件的方法(生成HTML)
Nov 27 PHP
php cli 方式 在crotab中运行解决
Feb 08 PHP
PHP学习之正则表达式
Apr 17 PHP
遭遇php的in_array低性能问题
Sep 17 PHP
php警告Creating default object from empty value 问题的解决方法
Apr 02 PHP
PHP has encountered a Stack overflow问题解决方法
Nov 03 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
yii2中dropDownList实现二级和三级联动写法
Apr 26 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
Laravel中GraphQL接口请求频率实战记录
Sep 01 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 zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
前台js调用后台方法示例
2013/12/02 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
Vue实现左右菜单联动实现代码
2018/08/12 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python正则实现计算器功能
2017/12/14 Python
Python反射用法实例简析
2017/12/22 Python
使用tensorflow实现线性回归
2018/09/08 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
Python读写锁实现实现代码解析
2020/11/28 Python
python 实现有道翻译功能
2021/02/26 Python
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
办公室秘书岗位职责范本
2014/02/11 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js