用模块shmop为加速PHP5而努力!

原创 2004年08月30日 18:08:00

  MMCACHE最新版已经与PHP5严重不兼容。我看了看PHP5的源代码,意外发现一个SHM模块--shmop。

  琢磨它的说明文档,我写了一个不成熟的函数:

/*author:tmgh@www.deyang.gov.cn

我个人用这个函数来显示首页(反正是CMS内容管理系统,不需要时时刻刻更新,将$time设置成1200秒足够了),查看栏目、查看具体某一条信息,我用jpcache来缓存

*/

function getcontent($time)
{
$shm_id = shmop_open(0xff4, "c", 0644, 20);
if($shm_id){
$shm_size = shmop_size($shm_id);
$mydate = shmop_read($shm_id, 0, $shm_size);
shmop_close($shm_id);
$date=date("YmdHis");
if($date-$mydate>=$time){
$date=date("YmdHis");
$shm_id = shmop_open(0xff4, "c", 0644, 20);
$shm_bytes_written = shmop_write($shm_id, $date, 0);
shmop_close($shm_id);
ob_start();
maincontent();
$data = ob_get_contents();
$shm_id = shmop_open(0xff3, "c", 0644, strlen($data));
$shm_bytes_written = shmop_write($shm_id, $data, 0);
shmop_close($shm_id);
}
else{
$shm_id = shmop_open(0xff3, "a", 0644, 150000);
$shm_size = shmop_size($shm_id);
$my_string = shmop_read($shm_id, 0, $shm_size);
shmop_close($shm_id);
echo $my_string;
}
}
else{
$date=date("YmdHis");
$shm_id = shmop_open(0xff4, "c", 0644, 20);
$shm_bytes_written = shmop_write($shm_id, $date, 0);
shmop_close($shm_id);
ob_start();
maincontent();
$data = ob_get_contents();
$shm_id = shmop_open(0xff3, "c", 0644, strlen($data));
$shm_bytes_written = shmop_write($shm_id, $data, 0);
shmop_close($shm_id);
}
}

其中maincontent()是一个函数,就是需要加速的页面的内容,比如:

function maincontent()
{
/*这个函数里面可以为任意内容。将需要加速的代码直接写在这里面即可。*/
$smarty = new Smarty;
$smarty->display('title.tpl');
$smarty->display('index.tpl');
$smarty->display('footer.tpl');
}

  测试结果比较:

  没用这个加速代码之前,用ab -n2000 -c64 -dS http://localhost/得出的结果是:

  Transfer rate:          33.25 [Kbytes/sec]

  使用这个加速代码:

  Transfer rate:          6382.55 [Kbytes/sec]

  现在的速度是以前的6382.55/33.25=191.96倍!

  函数说明:getcontent($time)中的$time为缓存时间;shmop为内存存取模块,0xff3和0xff4是我自己随意取的key。我使用的平台:win2000+apache2.1-dev+PHP5+MySQL。PHP中的具体说明:http://www.php.net/manual/zh/ref.shmop.php

  没有MMCACHE一样的加速PHP5!我自己很满意。代码没有优化,有意者可以自己修改。毕竟opensource嘛。哈哈。

  

PHP IPC函数,shm,shmop,message——共享内存函数,消息队列,与c/c++通讯

--enable-sysvsem.  信号量,个人感觉最好是无锁无信号设计速度更快 --enable-sysvshm.  shm*函数,将php变量放入共享内存,单一id可以插入多个php变量,自动序...
  • zkaipmoo
  • zkaipmoo
  • 2013年12月17日 00:55
  • 1866

PHP内置扩展列表

扩展库 说明 注解 php_bz2.dll Bzip2压缩函数库 无 php_calendar.dll 历法转换函数库 自PHP4.0.3起内置 php_cpdf.d...
  • xiaozhihui7965
  • xiaozhihui7965
  • 2016年08月31日 23:02
  • 551

编译安装openresty+mysql+php7

1.准备1.更新系统yum makecache && yum -y update2.安装常用基础软件yum -y install bash-completion vim net-tools bind-...
  • leiflyy
  • leiflyy
  • 2016年01月11日 16:28
  • 1227

php5.4中所有的function

执行下列代码获得
  • huoba1
  • huoba1
  • 2015年01月06日 14:54
  • 1017

给PHP安装和开启curl扩展

转载:http://down.chinaz.com/server/201102/50_1.htm 安装某些PHP源码如CMSTOP时需求系统开启curl扩展,这需要修改PHP的配置,...
  • zhangxinrun
  • zhangxinrun
  • 2013年11月17日 22:03
  • 4111

Hprose for php(一)——快速入门

本文参考了Hprose官方的用户手册,Hprose官网:http://www.hprose.com/  使用Hprose制作一个简单的分布式应用程序只需要几分钟的时间。本文将用一个简单的实例...
  • half1
  • half1
  • 2014年03月12日 19:15
  • 3159

php for Linux之MySQL扩展模块安装与配置

安装PHP扩展,已经有太多人写过了,随便百度、谷歌一下,都可以查到各种PHP扩展的安装方法,今天我要写的是,在本地没有安装msyql应用的情况下,如何安装配置php的mysql扩展。首先说说为什么会有...
  • ijijni
  • ijijni
  • 2017年01月07日 21:23
  • 487

linux系统扩展php的zip模块

问题:在虚拟机上导出excel文件和word文件时出现了以下的错误: Fatal error:  Uncaught Error: Class 'ZipArchive' not found in /us...
  • qiufengwuqing123
  • qiufengwuqing123
  • 2016年12月17日 12:19
  • 1634

php加速器eAccelerator安装及效果对比

最近想着如何优化一下php,找到了eAccelerator这个开源软件,一下引用一段官方说明介绍eAccelerator:eAccelerator是一款php加速和优化软件,通过将编译后的php缓存起...
  • kai404
  • kai404
  • 2016年08月10日 10:32
  • 1041

php连接不上mysql 出现HTTP 500 内部服务器错

企鹅千万 这个有人说把 php_mysql.dll ,libmysql.dll php.ini文件放到c盘  自己尝试后发现不是这个原因,报错的原因是没有和相应的数据库dll文件关联起来 1...
  • hll174
  • hll174
  • 2015年03月22日 16:53
  • 5061
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用模块shmop为加速PHP5而努力!
举报原因:
原因补充:

(最多只允许输入30个字)