Maison >développement back-end >tutoriel php >Comment utiliser PHP combiné avec Redis pour obtenir une concurrence élevée dans la publication et Weibo

Comment utiliser PHP combiné avec Redis pour obtenir une concurrence élevée dans la publication et Weibo

墨辰丷
墨辰丷original
2018-05-29 15:10:091237parcourir

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(&#39;127.0.0.1&#39;, 6379);
$redis->auth("php001");
//连接redis
$web_info= array(
	&#39;uid&#39; => $_REQUEST[uid], //发布者id
	&#39;username&#39; => $_REQUEST[username],//发布者用户名
	&#39;content&#39; =>$_REQUEST[content],//微博内容
);


//将数组转成json来存储
$list = json_encode($web_info);
//lpush向KEY对应的头部添加一个字符串元素
$redis->lpush(&#39;weibo_lists&#39;,$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=&#39;&#39;,$username=&#39;&#39;,$content=&#39;&#39;){
		try{
			$dsn = "mysql:localhost;dbname=localhost;dbname=big";
			$db = new PDO($dsn,&#39;big&#39;,&#39;123456&#39;);	
			$db->exec("SET NAMES UTF8");
			$sql ="insert into ih_weibo(uid,username,content)values(&#39;$uid&#39;,&#39;$username&#39;,&#39;$content&#39;)";
			//echo $sql;
			$db->exec($sql);
		}catch(PDOException $e){
			echo $e->getMessage();
		}
	}
}


weibo_mysql.php


<?php
require_once &#39;Pdodb.class.php&#39;;
set_time_limit(0); // 取消脚本运行时间的超时上限


$pdo = new Pdodb();
$redis = new Redis();
$redis->connect(&#39;127.0.0.1&#39;, 6379);


while (true) {
	//返回的列表的大小。如果列表不存在或为空,该命令返回0。如果该键不是列表,该命令返回false
	if($redis -> lsize(&#39;weibo_lists&#39;)){
		//从LIST头部删除并返回删除数据
		$info = $redis->rpop(&#39;weibo_lists&#39;);
		$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 :

assembly phpredis

PHP Redis, phpredis

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn