这篇文章将为大家详细讲解有关怎么在php中利用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高并发实现发帖就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。