Maison  >  Article  >  développement back-end  >  PHP implémente la méthode de publication de Weibo via la file d'attente de messages Redis

PHP implémente la méthode de publication de Weibo via la file d'attente de messages Redis

墨辰丷
墨辰丷original
2018-05-21 11:10:271314parcourir

Cet article présente principalement la méthode PHP utilisant la file d'attente de messages Redis pour publier Weibo. Il analyse les compétences et précautions associées de PHP combinées à la base de données Redis pour faire fonctionner la file d'attente de messages afin de mettre en œuvre la publication Weibo sur la base d'exemples spécifiques. le besoin peut se référer à ce qui suit

Les détails sont les suivants :

Dans certaines applications où les utilisateurs publient du contenu, des dizaines de milliers d'utilisateurs peuvent publier des messages en même temps en une seconde. Parfois, l'erreur "trop ​​de connexions" peut se produire lors de l'utilisation de mysql. Bien sûr, définissez le paramètre max_connections de Mysql sur un nombre plus grand, mais il s'agit d'une solution temporaire plutôt que d'une solution permanente. À l'aide de la file d'attente de messages Redis, les messages publiés par les utilisateurs sont temporairement stockés dans la file d'attente de messages, puis plusieurs programmes cron sont utilisés pour insérer les données de la file d'attente de messages dans Mysql. Cela réduit efficacement la forte concurrence de Mysql. Le principe spécifique de mise en œuvre est le suivant :

Interface de publication Weibo existante :

$weibo = new Weibo();
$uid = $weibo->get_uid();
$content =$weibo->get_content;
$time = time();
$webi->post($uid,$content,$time);

Cette méthode écrit directement le contenu Weibo dans Mysql. Le processus spécifique est omis.

Écrivez le message à redis :

$redis = new Redis(localhost,6379);
$redis->connect();
$webiInfo = array('uid'=>get_uid(),'content'=>get_content(),'time'=>time());
$redis->lpush('weibo_list',json_encode($weiboInfo));
$redis->close();

Récupérez les données de redis :

while(true){
   if($redis->lsize('weibo_list') > 0){
     $info = $redis->rpop('weibo_list');
     $info = json_decode($info);
   }else{
     sleep(1);
   }
}
$weibo->post($info->uid,$info->content,$info->time);
//插入数据的时候可以用一次性插入多条数据的方法,避免循环插入,不停的循环插入可能会导致死锁问题。

Astuce : Vous pouvez exécuter plusieurs programmes cron en même temps pour insérer des données de file d'attente de messages dans Mysql. Lorsqu'un serveur Redis ne peut pas gérer une grande quantité de concurrence, utilisez. L'algorithme de hachage de cohérence distribue la concurrence à différents serveurs Redis.

Recommandations associées :

php+message redisExplication détaillée des étapes d'implémentation de la file d'attente (avec code)

Comment PHP utilise la file d'attente de messages Redispour publier sur Weibo

Mise en œuvre du système de notification de messages Redis

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