php+redis+mysq は高い同時実行性をどのように処理しますか (コード例)

不言
リリース: 2023-04-03 16:26:01
オリジナル
1997 人が閲覧しました

この記事の内容は、php redis mysq が高同時実行をどのように処理するか (サンプルコード) に関するもので、一定の参考価値があります。必要な友人は参照してください。お役に立てば幸いです。

1. 実験環境
ubuntu、php、apache または nginx、mysql
2. 要件
これで、次のようなインターフェイスが提供されます。同時実行の量が比較的大きい場合、このインターフェイスは PHP で作成されます。その機能は、ユーザーの GET リクエストの名前フィールドを受信し、このフィールドを mysql に保存することです。次に、最初にデータを Redis キューに入れ、そしてその後、Redis がこれらのデータを定期的に mysql に転送できるようにします。
2. 実装手順
1. 新しいデータベース テストとデータ テーブル テストを作成します。テーブル作成ステートメントは次のとおりです。

CREATE TABLE `test` (
  `name` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf-8
ログイン後にコピー

1. / に新しいインデックスを作成します。 var/www/test.php の内容は以下の通りで、仮想ホストを設定してアクセスできるようにします。

<?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. 同じディレクトリに新しい redis.php ファイルを作成し、データベースのパスワードやその他の設定の変更に注意してください。内容は次のとおりです

<?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. redis を実行します.php スクリプト ファイル

nohup php redis.php &
ログイン後にコピー

4.index.php スクリプト ファイル (http://192.168.116.128/?name=33 など) にアクセスし、データが mysql に入力されているかどうかを確認します。

おすすめ関連記事:

PHP の配列関数の演算とは何ですか? php 配列関数のアプリケーション (コード付き)

thinkphp5 フレームワークと Android 実装 QR コード生成コード

以上がphp+redis+mysq は高い同時実行性をどのように処理しますか (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート