PHP访问数缓存处理
利用Redis或Memcache作为MySQL的缓存,采用是ThinkPHP框架。
方法一
- 采用ThinkPHP的S方法:
$savedata['uid']=session('uid');
$savedata['ip']=$_SERVER['REMOTE_ADDR'];
$savedata['url']=$_SERVER['REQUEST_URI'];
$savedata['created_time']=time();
$savedata['created_by']=session('uid');
$cache = S(array('type'=>'redis','host'=>'127.0.0.1','port'=>'6379','prefix'=>'think','expire'=>600000));
// 获取缓存
$visitor_data = $cache->visitor_data;
if(empty($visitor_data)){
$visitor_data=array();
}
array_push($visitor_data, $savedata);
// 设置缓存
$cache->visitor_data = $visitor_data;
if(count($visitor_data)>3){
foreach ($visitor_data as $key => $value) {
$m = M("VisitorLog");
$m->add($value);
}
// 删除缓存
unset($cache->visitor_data);
}
方法二
- 采用Redis
$savedata['uid']=session('uid');
$savedata['ip']=$_SERVER['REMOTE_ADDR'];
$savedata['url']=$_SERVER['REQUEST_URI'];
$savedata['created_time']=time();
$savedata['created_by']=session('uid');
// 连接本地的 Redis 服务
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
//查看服务是否运行
if(empty($redis)){
return dataResult(null,'',0);
}
//存储数据到列表中
$redis->lpush("visitor_data",json_encode($savedata));
// 获取存储的数据并输出
$len=$redis->llen("visitor_data");
if($len>2){
$visitor_data = $redis->lrange("visitor_data",0,$len);
foreach ($visitor_data as $key => $value) {
$m = M("VisitorLog");
$m->add(json_decode($value,true));
}
$redis->del("visitor_data");
}
方法三
- 采用Memcache:
$savedata['uid']=session('uid');
$savedata['ip']=$_SERVER['REMOTE_ADDR'];
$savedata['url']=$_SERVER['REQUEST_URI'];
$savedata['created_time']=time();
$savedata['created_by']=session('uid');
$memcache = new \Memcache; //创建一个memcache对象
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect"); //连接Memcached服务器
$visitor_data = $memcache->get('visitor_data'); //从内存中取出key的值
if(empty($visitor_data)){
$visitor_data=array();
}
if(count($visitor_data)>2){
foreach ($visitor_data as $key => $value) {
$m = M("VisitorLog");
$m->add($value);
}
unset($visitor_data);
$visitor_data=array();
}
array_push($visitor_data,$savedata);
$memcache->set('visitor_data', $visitor_data); //设置一个变量到内存中,名称是key 值是test
PHP访问数缓存处理的更多相关文章
- .NET跨平台之旅:基于.NET Core改写EnyimMemcached,实现Linux上访问memcached缓存
注:支持 .NET Core 的 memcached 客户端 EnyimMemcachedCore 的 NuGet 包下载地址:https://www.nuget.org/packages/Enyim ...
- memcached基于socket访问memcache缓存服务器
memcached基于socket访问memcache缓存服务器 操作memcache常用三种方法: .memcache基于php_memcache.dll扩展(php扩展) .memcached基于 ...
- 查看apache当前并发访问数和进程数
1.查看apache当前并发访问数: netstat -an | grep ESTABLISHED | wc -l 对比httpd.conf中MaxClients的数字差距多少. 2.查看有多少个进程 ...
- SQLite支持的并发访问数
SQLite objects created in a thread can only be used in that same thread.The object was created in th ...
- XAF使用数据库访问层缓存的提升性能
很多时候,为了提升性能,我们可以给数据库访问层做缓存. 以下几步可以完成这个任务:1. 使用自定义的 XPObjectSpaceProvider1.1. 创建自定义的 XPObjectSpacePro ...
- JAVA-Semaphore信号灯-可实现维护自身线程访问数
import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Ex ...
- -_-#【减少 DOM 访问】缓存已经访问过的元素
Minimize DOM Access Cache references to accessed elements 选择器查询是开销很大的方法.所以,使用选择器的次数应该越少越好,并且尽可能缓存选中的 ...
- nginx-rrd监控nginx访问数
一 .查看已安装的nginx是否包含stub_status模块 /usr/local/nginx/sbin/nginx -V nginx version: Nginx/1.2.0 configure ...
- C#使用Redis实现网站统计访问数或点赞数功能!
1.安装.net操作Redis需要的NuGet包: 这里推荐使用:StackExchange.Redis,在程序包管理器控制台输入命令install-package stackexchange.red ...
随机推荐
- chrome 浏览器调用 ocx 插件
原文:http://blog.csdn.net/wangchao1988ok/article/details/45193489 IE 上使用 ocx 插件网上已经有很多资料说明,这里就不重复了,那如何 ...
- okhttp3带cookie请求
Request经常都要携带Cookie,上面说过request创建时可以通过header设置参数,Cookie也是参数之一.就像下面这样: Request request = new Request. ...
- linux 用户管理修改用户信息、密码状态、删除用户、退出登陆、切换用户
修改用户信息usermoduseradd支持的选项usermod都支持passwd有两个选项-l(在密码串前面加了两个叹号),-u,usermod有两个选项:-L 临时锁定用户(Lock)(在密码串前 ...
- linux 文件操作命令 touch、cat、more、less、head、tail
touch /bin/touch 创建空文件 linux 创建文件可以使用特殊符号,/除外 touch test test1 创建了两个文件touch "test test1" 创 ...
- Java动态代理和反射机制
反射机制 Java语言提供的一种基础功能,通过反射,我们可以操作这个类或对象,比如获取这个类中的方法.属性和构造方法等. 动态代理:分为JDK动态代理.cglib动态代理(spring中的动态代理). ...
- Apache服务器如何通过.htaccess文件设置防盗链?
Apache服务器通过.htaccess文件设置防盗链 用户经常面对的一个问题就是服务器的流量问题,而站点文件被盗链是其中最为主要的部分.所谓盗链,是指其他网站直接链接我们网站上的文件,一般来说,盗链 ...
- MySQL 5.7 Reference Manual】15.4.2 Change Buffer(变更缓冲)
15.4.2 Change Buffer(变更缓冲) The change buffer is a special data structure that caches changes to se ...
- MacOS(苹果电脑&苹果系统)连接京瓷300i 打印机
前往京瓷官网下载打印机驱动: http://www.kyoceradocumentsolutions.com.cn/support/mfp/download/taskalfa300i.html 驱动安 ...
- c++作业之圆面积
代码传送门
- RabbitMQ学习以及与Spring的集成(一)
本文记录RabbitMQ服务的搭建过程. 想要使用RabbitMQ消息中间件服务.首先要安装RabbitMQ,可以在:https://www.rabbitmq.com/download.html根据安 ...