用模块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嘛。哈哈。

  

编译安装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
  • 1401

Sphinx 安装记录

前言 如果你想支持中文全文检索的话,请参考 coreseek 安装记录。 如果你已经安装 sphinx 或者 coreseek, 只是想查找怎么配置和使用 sphinx 和 coreseek ...
  • yangguangmeng
  • yangguangmeng
  • 2016年06月26日 16:59
  • 2296

条款29:为“异常安全”而努力是值得的

结论1:异常安全函数即使发生异常也不会泄漏资源或允许任何数据结构败坏。...
  • u013540854
  • u013540854
  • 2014年06月14日 15:07
  • 523

为原计划而努力

从昨晚11点,竟然一直睡到了8点。我知道,这是身体真的是在为原计划而努力。 但我们已经推后了一周。 无论如何,请好好努力,好好坚持。...
  • sjphiChina
  • sjphiChina
  • 2016年08月30日 23:41
  • 120

php5.4中所有的function

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

CentOS+Nginx+PHP+Mysql 服务器配置

[利用yum命令配置、升级所需程序库] # sudo -s# LANG=C# yum -y install gcc gcc-c++ autoconf #yum -y install make ...
  • neubuffer
  • neubuffer
  • 2013年11月23日 14:38
  • 1323

为梦想而努力

又是一天过去 ,重来不会停下脚步,只有不停的追逐,哪怕是最后一颗稻草,也可能是救命的恩赐。...
  • chengqianduan
  • chengqianduan
  • 2016年11月20日 22:10
  • 153

为未来而努力

    从此刻开始,我将变得忙碌起来,将把生活变得更加充实,我热爱生活,爱我的家人,爱我的朋友,爱我的祖国,我要为我的家人而努力,我要为我的未来而加油,我要为我的祖国贡献我的一份力量!!加油!!...
  • qitian88
  • qitian88
  • 2009年10月31日 19:58
  • 92

PHP Nginx MySQL 高并发调优 小试

项目要求实现一个免费抢券的功能,涉及到高并发的问题,由于PHP是阻塞的单线程模型,不支持多线程,因此也没有Java那么好用的同步机制,我想到的办法就是在数据库级别做相应的同步互斥的控制,Mysql的锁...
  • zzy2011266
  • zzy2011266
  • 2015年01月09日 23:20
  • 3237

nginx+php5

安装步骤:一、获取相关开源程序:  1、【适用CentOS操作系统】利用CentOS Linux系统自带的yum命令安装、升级所需的程序库(RedHat等其他Linux发行版可从安装光盘中找到这些程序...
  • remotesupport
  • remotesupport
  • 2011年03月14日 15:24
  • 531
收藏助手
不良信息举报
您举报文章:用模块shmop为加速PHP5而努力!
举报原因:
原因补充:

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