话说域名被墙之前 服务器数据库因为访客量实在太大的原因,导致超出mysql的最大并发 无法正常链接
那天下午刚考完试回家 就立马操作起来 弄memcache加速并不算是特别难 当然 本文不适合对WP的修改,只是单纯PHP调用MemCache的一个方案而已
使用了MemCache缓存MySql结果进行操作 网站速度瞬间上去,数据库负载也终于可以好了
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
————摘自AMH面板简介
博客站的服务器用的AMH的面板没有自己编译PHP之类 应用中心直接安装了MemCache服务器
如果用自己编译 http://memcached.org/ 去官网下载安装就可以了,这里就不多说了~
安装完后,确保PHP服务器支持MemCache拓展,如果不支持可以到下面两个地址安装依赖库
https://launchpad.net/libmemcached/1.0/1.0.4/+download/libmemcached-1.0.4.tar.gz
http://pecl.php.net/get/memcached-2.0.1.tgz
安装完后phpinfo()查看是否支持MemCache功能,如果支持就可以进行下一步了
MemCache不修改的话应该是用默认口11211
首先先测试下能不能正常用
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set('test', 'ok', 0,60);
$mem->get('test');
php执行上面代码,如果输出ok则程序正常,可以使用。
我的想法大致是这样的,首先判断一下 当前数据是否在MemCache数据库有存储,如果有直接输出,不存在则调用mysql数据并存储输出。
这样大致就可以实现数据的储存了,我ihxvip就是这样实现的,下面给一个类似查询的栗子吧,使用mysqli
首先第一步,创建
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
然后直接if数据是否存在
if($mem->get($data) ==''){
等于空则开始使用数据库,并且存储进MemCache
$db = new mysqli(sqlhost,sqluser,sqlpass,sqldata);
$db->query("set names 'UTF8'");
$rows = $db->query("SELECT * FROM test where id = data");
if($row = $rows->fetch_array()){
$mem->set($data, $row, 0, 300);
}
处理好后,差不多就行了,反正这玩意就是放在程序头运行,需要数据处,直接使用get获取$mem->get($data) 就可以了
如果想要方便点,你可以放进一个函数里,反正大体我就是这样处理的,使用请自行修改,这里不过思路而已
不过用了memcache速度真的没的说,处理速度比mysql 6多了
WP本来就有MEM的对象缓存插件,这个还能起多大作用?
2016年7月15日 02:28我这个不是针对wp说的,只是php使用memcache的基本调用方案
2016年7月24日 13:55AMH的php7不支持memcache,弄了好久,最后才发现要弄memcached,话说AMH真好用!
2016年7月14日 07:47支持啊,有php7的组件
2016年7月14日 08:38爱耍的小幻
2016年7月13日 12:14爱生活爱折腾
2016年7月24日 13:54不试试redis?
2016年7月11日 22:34有空看看
2016年7月24日 13:47服务器可玩的花样多多,博主牛逼轰轰的!
2016年7月11日 19:52愈折腾愈开心~
2016年7月24日 13:47这玩意我了解过,挺不错
2016年7月11日 09:27负载高
2016年7月24日 13:46