Maison  >  Article  >  développement back-end  >  Comment php+redis+mysq gère-t-il la concurrence élevée (exemple de code)

Comment php+redis+mysq gère-t-il la concurrence élevée (exemple de code)

不言
不言original
2018-08-06 14:11:431979parcourir

Le contenu de cet article explique comment php+redis+mysq gère la concurrence élevée (exemple de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

1. Environnement expérimental
ubuntu, php, apache ou nginx, mysql
2 Exigences
Il existe désormais une interface qui peut. apparaît Lorsque le niveau de concurrence est relativement important, cette interface est écrite en PHP. Sa fonction est de recevoir le champ de nom dans la requête GET de l'utilisateur, puis de stocker ce champ dans mysql. Maintenant, placez d'abord les données dans la file d'attente redis. puis laissez Redis transférer régulièrement ces données vers MySQL.
2. Étapes de mise en œuvre
1. Créez un nouveau test de base de données et un nouveau test de table de données. Les instructions de création de table sont les suivantes

CREATE TABLE `test` (
  `name` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf-8

1. dans /var/www/test index.php, le contenu est le suivant, et configurez l'hôte virtuel pour le rendre accessible.

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
try {
    $res = $redis->LPUSH('name', $_REQUEST["name"]);
} catch (Exception $e) {
    echo $e->getMessage();
}

2. Créez un nouveau fichier redis.php dans le même répertoire, et veillez à modifier le mot de passe de la base de données et les autres configurations. Le contenu est le suivant

<?php
$redis = new Redis();
$redis->pconnect('127.0.0.1',6379);
$mysql=mysqli_connect("localhost","root","bnm");
mysqli_select_db($mysql,"test") or die("不能选择数据库");
if(!$mysql){
    die("连接失败");
}
while (true){
    try{
        $value = $redis->LPOP('name');
        if(!$value){
            echo "等待";
        }else{
            $sql="insert into test(name) values ('".$value."')";
            $result=mysqli_query($mysql,$sql);
            if($result&&mysqli_affected_rows($mysql)>0){
                echo "插入成功";
            }else{
                echo "插入失败:".mysqli_error($mysql);
            }
        }
    }catch(Exception $e){
        echo $e->getMessage();
    }
    sleep(1);
}

3. . Exécutez le fichier de script redis.php

nohup php redis.php &

4. Visitez le fichier de script index.php, tel que : http://192.168.116.128/?name=33, puis vérifiez si les données ont été entré dans MySQL.

Articles connexes recommandés :

Quelles sont les opérations des fonctions de tableau PHP ? Application de la fonction de tableau php (avec code)

framework thinkphp5 et Android implémentent le code de génération de code QR

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