この記事の内容は、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 サイトの他の関連記事を参照してください。