发帖、发微博、点赞、评论等这些操作很频繁的动作如果并发量小,直接入库是最简单的
但是并发量一大,数据库肯定扛不住,这时可采取延迟发布:先将发布动作保存在队列里,后台进程循环获取再入库
模拟发布微博先进入redis队列
weibo_redis.php
<?php //此处需要安装phpredis扩展 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->auth("php001"); //连接redis $web_info= array( 'uid' => $_REQUEST[uid], //发布者id 'username' => $_REQUEST[username],//发布者用户名 'content' =>$_REQUEST[content],//微博内容 ); //将数组转成json来存储 $list = json_encode($web_info); //lpush向KEY对应的头部添加一个字符串元素 $redis->lpush('weibo_lists',$list); $redis->close(); var_dump($list); ?>
模拟后台进程从redis队列获取微博
Pdodb.class.php
<?php class Pdodb{ public function post($uid='',$username='',$content=''){ try{ $dsn = "mysql:localhost;dbname=localhost;dbname=big"; $db = new PDO($dsn,'big','123456'); $db->exec("SET NAMES UTF8"); $sql ="insert into ih_weibo(uid,username,content)values('$uid','$username','$content')"; //echo $sql; $db->exec($sql); }catch(PDOException $e){ echo $e->getMessage(); } } }
weibo_mysql.php
<?php require_once 'Pdodb.class.php'; set_time_limit(0); // 取消脚本运行时间的超时上限 $pdo = new Pdodb(); $redis = new Redis(); $redis->connect('127.0.0.1', 6379); while (true) { //返回的列表的大小。如果列表不存在或为空,该命令返回0。如果该键不是列表,该命令返回false if($redis -> lsize('weibo_lists')){ //从LIST头部删除并返回删除数据 $info = $redis->rpop('weibo_lists'); $info = json_decode($info); $pdo->post($info->uid,$info->username,$info->content); } $redis->close(); sleep(10);//延时10秒 }
后台执行weibo_mysql.php
nohup php /var/www/html/big/weibo_mysql.php &
以上这篇php结合redis高并发下发帖、发微博的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍redis+php实现微博(二)发布与关注功能详解,包括了redis+php实现微博(二)发布与关注功能详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了redis+php实现微博发布与关注功能。分享给大家供大家参考,具体如下: 数据结构: set post:postid:3:time timestamp set post:postid:3:userid 5 set pos
本文向大家介绍PHP+Mysql+jQuery实现发布微博程序 php篇,包括了PHP+Mysql+jQuery实现发布微博程序 php篇的使用技巧和注意事项,需要的朋友参考一下 先还是要说明本例的业务流程: 1、前端用户输入内容,并对输入的内容字数进行实时统计。 2、用户提交数据,jQuery实现通过Ajax向后台发送数据。 3、后台PHP接收提交表单的数据,并对数据进行必要的安全过滤。 4、后
本文向大家介绍PHP使用redis消息队列发布微博的方法示例,包括了PHP使用redis消息队列发布微博的方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP使用redis消息队列发布微博的方法。分享给大家供大家参考,具体如下: 在一些用户发布内容应用中,可能出现1秒上万个用户同时发布消息的情况,此时使用mysql可能会出现" too many connections"错误,当然
本文向大家介绍Redis瞬时高并发秒杀方案总结,包括了Redis瞬时高并发秒杀方案总结的使用技巧和注意事项,需要的朋友参考一下 1.Redis 丰富的数据结构(Data Structures) 字符串(String) Redis字符串能包含任意类型的数据;; 一个字符串类型的值最多能存储512M字节的内容; 利用INCR命令簇(INCR, DECR, INCRBY)来把字
本文向大家介绍nodejs开发微博实例,包括了nodejs开发微博实例的使用技巧和注意事项,需要的朋友参考一下 之前一直执着于前端开发,最近几天,开始学起了nodejs。作为一名前端开发者,见到这样一门用javascript写的后台自然是很激动的。但是,后台毕竟不同于前端,在学习的过程中,还是会遇到不少问题。 为了开始学习nodejs,一开始选择了《深入浅出nodejs》这本书,看了几章之后,得出
本文向大家介绍springboot高并发下提高吞吐量的实现,包括了springboot高并发下提高吞吐量的实现的使用技巧和注意事项,需要的朋友参考一下 公司让做一个全文检索的项目,我使用的是elasticsearch。但是对性能有很高的要求,为了解决性能问题,我简直是寝食难安。 es(elasticsearch)没有使用分布式,单台的。 开发完测试的时候,查询慢,吞吐量低。 网友们建议用异步--使
本文向大家介绍php多线程并发实现方法,包括了php多线程并发实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php多线程并发实现方法。分享给大家供大家参考,具体如下: java里多线程就是一个new thread的事情,php依赖apache靠着linux底层有一个多线程的办法。 这里就来说说如果你无法操控apache的服务器,如何模拟php并发 以上代码,在本地写入一个文件。
本文向大家介绍jQuery实现鼠标选文字发新浪微博的方法,包括了jQuery实现鼠标选文字发新浪微博的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery实现鼠标选文字发新浪微博的方法。分享给大家供大家参考,具体如下: 最近注意到新浪博客有个小功能,就是当鼠标选中一段文字时会浮现一个小图片,点击这个图片可以把选中内容发送到新浪微博,一时兴起昨晚就写了一个Demo玩了一下,代码超