• HYPHP
  • 1.3新版本数据缓存系统特性解说

论坛终于来到了1.3 也来到了数据缓存版本

s.png

我们目前的程序使用的旧文件缓存,对一些常操作数据的地方进行了文件缓存。

我们都知道一套程序从开始到结束,都是在消耗服务器资源,何况要面对如此多的用户,我们的程序有调试信息,上面有我们的程序跑分,显示程序耗时与内存使用。

但内存使用的显示仅仅是我们程序执行过程中的消耗,并不代表是php编译进程等一系列内核消耗。

所以过程消耗内存远远不止于这点,还有程序运行速度也一样,只是单纯记录程序开始到结束所消耗的时间。 

接下来比对一下 DEBUG开启与关闭的运行速度


开启DEBUG 刷新10次左右 均在 0.040 左右

QQ截图20160423124357.jpg

关闭DEBUG 刷新10次左右 均在 0.015 左右

QQ截图20160423124642.jpg

OK ,可见关闭DEBUG 提升速度将是 2 - 3 倍的 ! 


论坛执行消耗过程


打开DEBUG , SQL查询 (14) , 文件加载统计 (25), New 类 (15)

关闭DEBUG,  SQL查询 (6) , 文件加载统计 (23) , New 类 (13)


我们主要是看SQL查询, 可见打开DEBUG后 论坛是不使用缓存的,并且会随着每次访问都会生成新的。


访问首页

开启DEBUG 所使用的SQL

  • SELECT * FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0.001ms
  • SELECT * FROM "hy_forum" [耗时] 0ms
  • SELECT * FROM "hy_usergroup" [耗时] 0.001ms
  • SELECT COUNT(*) FROM "hy_post" [耗时] 0ms
  • SELECT COUNT(*) FROM "hy_thread" [耗时] 0ms
  • SELECT COUNT(*) FROM "hy_user" [耗时] 0ms
  • SELECT * FROM "hy_thread" ORDER BY "id" DESC LIMIT 0,10 [耗时] 0.001ms
  • SELECT "user" FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0ms
  • SELECT "user" FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0ms
  • SELECT * FROM "hy_thread" WHERE "top" = 2 [耗时] 0ms
  • SELECT "user" FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0ms
  • SELECT "user" FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0.001ms
  • SELECT COUNT(*) FROM "hy_thread" [耗时] 0ms

关闭DEBUG 所使用SQL

  • SELECT * FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0ms
  • SELECT COUNT(*) FROM "hy_post" [耗时] 0ms
  • SELECT COUNT(*) FROM "hy_thread" [耗时] 0ms
  • SELECT COUNT(*) FROM "hy_user" [耗时] 0.0156ms
  • SELECT COUNT(*) FROM "hy_thread" [耗时] 0ms

可见 关闭DEBUG后的SQL少了非常多, 因为数据都被缓存了。

如果我们没有缓存,那么每个用户访问都要操作SQL,负载是很高的,特别是数据大的网站。


目前数据缓存系统已经支持最基本的 File 与 DB, 并支持第三方扩展内存缓存,

  • Apachenote
  • Apc
  • Eacceleratpr
  • Memcache
  • Memcached
  • Redis
  • Shmop
  • Wincache
  • Xcache 

支持Memcached 负载均衡内存服务器

QQ截图20160423141146.jpg


论坛内核提供了缓存函数 , 一键缓存数据, 从而二次开发以及插件开发 使用缓存更加简单方便!

站长解决一下手机浏览论坛时,手指往下滑屏时按到图片的问题。。。手指按到图片之后会放大图片,如果是多张图连着一起的话,根本无法往下滑动屏幕啊。。。

@admin 老大可以考虑下使用phpfastcache扩展类,文件、sql缓存都有。