Cet article présente principalement la méthode de combinaison de PHP avec Redis pour obtenir une simultanéité élevée dans la publication et les amis Weibo intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Pour les opérations fréquentes telles que publier, publier sur Weibo, aimer et commenter, etc., si le degré de concurrence est faible, il est plus simple de les stocker directement dans la base de données
Mais si le niveau de concurrence est important, la base de données le gérera certainement. À ce stade, vous pouvez retarder la publication : enregistrez d'abord l'action de publication dans la file d'attente, et le processus en arrière-plan boucle pour l'obtenir, puis la stocker dans la base de données
.Simulez la publication Weibo et entrez d'abord dans la file d'attente 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); ?>
Simulez le processus en arrière-plan pour extraire Weibo de la file d'attente 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秒 }
Exécution en arrière-plan de weibo_mysql.php
nohup php /var/www/html/big/weibo_mysql.php &
Le ci-dessus est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.
Recommandations associées :
php installer l'extension redis, extension phpredis
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!