この記事は、PHPphp を使用して Swoole/Pool プロセス プールを介して Redis 永続接続を実現する方法を主に紹介する、php に関する関連知識を提供します。興味のある方はぜひご覧ください。皆様のお役に立てれば幸いです。 。
php Swoole | Pool プロセス プールに Redis 永続接続を実装させます
Swoole\Server の Manager 管理プロセス モジュールに基づくプロセス プール成し遂げる。複数のワークプロセスを管理できる 複数のプロセスを実装するProcessに比べて、Process\Poolはシンプルでカプセル化レベルが高い 開発者はあまりコードを書かずにプロセス管理機能を実装できる Co\Serverを使えば純粋なコルーチンスタイルを作成できる. マルチコア CPU を利用できるサーバー側プログラム。
Swoole プロセス プールは Redis データ読み取りを実装します
次の場合、WorkerStop が切断されると、Redis プロセス プールが WorkerStart を通じて開始され、Redis リスト データが永続的に読み取られます。すべての接続 すべての子プロセスをリサイクルします。
ステップ 1: コードのエンコード
ファイル: d10.php
<?php use Swoole\Process; use Swoole\Coroutine; // 指定5个工作进程 $pool = new Process\Pool(5); // 设置启用协程 $pool->set(['enable_coroutine' => true]); /** * onWorkerStart 子进程启动 * @param \Swoole\Process\Pool $pool Pool对象 * @param int $workerId WorkerId当前工作进程的编号,底层会对子进程进行标号 **/ $pool->on("WorkerStart", function (Process\Pool $pool, $workerId) { // 输出当前工作进程 echo "Worker #{$workerId} is started\n"; // 实例化化连接redis $redis = new Redis(); $redis->pconnect('127.0.0.1', 6379); // 指定redis键 $key = "key1"; // 循环读取列表数据 while (true) { // 弹出列表最后一个元素 $msgs = $redis->brpop($key, 2); // 元素值为空则跳过 if ( $msgs == null) { continue; } // 打印获取的值 var_dump($msgs); echo "Processed by Worker#{$workerId}\n"; } }); // 子进程结束 $pool->on("WorkerStop", function ($pool, $workerId) { echo "Worker#{$workerId} is stopped\n"; }); // 启动工作进程 $pool->start();
ステップ 2: Redis サービスを開始し、クライアント経由でリスト データを書き込む
これこの場合、PHP で Redis 拡張機能をインストールする必要があります
# 通过redis客户端连接 ./redis-cli 127.0.0.1:6379> lpush key1 'world'
コードをコピー
ステップ 3: d10.phpを実行します
php d10.php
ステップ 4: プロセスを表示します
ps aux | grep php root 938 0.0 1.2 129164 12412 ? Ss Apr21 0:00 php-fpm: master process (/usr/local/php-8.0.1/etc/php-fpm.conf) www 951 0.0 0.6 129164 6636 ? S Apr21 0:00 php-fpm: pool www www 952 0.0 0.6 129164 6640 ? S Apr21 0:00 php-fpm: pool www root 12327 0.0 1.2 126992 12800 pts/2 S+ 00:02 0:00 php d10.php root 12328 0.0 0.7 131096 7444 pts/2 S+ 00:02 0:00 php d10.php root 12329 0.0 0.7 131096 7448 pts/2 S+ 00:02 0:00 php d10.php root 12330 0.0 0.7 131096 7448 pts/2 S+ 00:02 0:00 php d10.php root 12331 0.0 0.7 131096 7448 pts/2 S+ 00:02 0:00 php d10.php root 12332 0.0 0.7 131096 7448 pts/2 S+ 00:02 0:00 php d10.php root 12355 0.0 0.0 112812 976 pts/3 R+ 00:09 0:00 grep --color=auto php
ステップ 5: 結果を出力する
php d10.php Worker #1 is started Worker #2 is started Worker #3 is started Worker #4 is started Worker #0 is started array(2) { [0]=> string(4) "key1" [1]=> string(5) "world" } Processed by Worker#1
d10.php ファイルは実行後常にブロックされ、redis リスト データの読み取りを続けます。Redis リストが出力されると、すぐにポップアップして画面に印刷されます。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHP で Swoole/Pool プロセス プールが Redis 永続接続を実装できるようにする方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。