Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie PHP in Kombination mit Redis, um eine hohe Parallelität beim Posten und Weibo zu erreichen

So verwenden Sie PHP in Kombination mit Redis, um eine hohe Parallelität beim Posten und Weibo zu erreichen

墨辰丷
墨辰丷Original
2018-05-29 15:09:571476Durchsuche

Dieser Artikel stellt hauptsächlich die Methode vor, PHP mit Redis zu kombinieren, um eine hohe Parallelität beim Posten zu erreichen. Freunde, die interessiert sind, können sich darauf beziehen.

Für häufige Vorgänge wie Posten, Posten auf Weibo, Liken und Kommentieren usw. ist es am einfachsten, wenn die Parallelität gering ist, sie direkt in der Datenbank zu speichern

Aber Wenn die Parallelität groß ist, wird die Datenbank dies auf jeden Fall bewältigen. Zu diesem Zeitpunkt können Sie die Veröffentlichung verzögern: Speichern Sie zuerst die Veröffentlichungsaktion in der Warteschlange, und der Hintergrundprozess führt eine Schleife durch, um sie abzurufen und dann in der Datenbank zu speichern

Simulieren Sie die Veröffentlichung von Weibo und betreten Sie zuerst die Redis-Warteschlange

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);
?>


Simulieren Sie den Hintergrundprozess, um Weibo aus der Redis-Warteschlange zu erhalten

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秒
}


Hintergrundausführung weibo_mysql.php

nohup php / var/www/html/big/weibo_mysql.php &

Das Obige ist der gesamte Inhalt davon Artikel, ich hoffe, dass er für das Studium aller hilfreich sein wird.


Verwandte Empfehlungen:

phpredis-Assembly

PHP Redis, phpredis

php install redis extension, phpredis extension


Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHP in Kombination mit Redis, um eine hohe Parallelität beim Posten und Weibo zu erreichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn