Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie PHP in Kombination mit Redis, um eine hohe Parallelität beim Posten und Weibo zu erreichen
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('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); ?>
Simulieren Sie den Hintergrundprozess, um Weibo aus der Redis-Warteschlange zu erhalten
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秒 }
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:
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!