Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mari kita bincangkan tentang cara PHP membenarkan kumpulan proses Swoole/Pool untuk melaksanakan sambungan berterusan Redis

Mari kita bincangkan tentang cara PHP membenarkan kumpulan proses Swoole/Pool untuk melaksanakan sambungan berterusan Redis

藏色散人
藏色散人ke hadapan
2023-02-08 10:50:294165semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang php, yang terutamanya memperkenalkan cara menggunakan PHPphp untuk merealisasikan sambungan berterusan Redis dengan kumpulan proses Swoole/Pool, mari kita lihat ia akan membantu semua orang. .

Mari kita bincangkan tentang cara PHP membenarkan kumpulan proses Swoole/Pool untuk melaksanakan sambungan berterusan Redis

php membenarkan kumpulan proses Swoole | Pool melaksanakan sambungan berterusan Redis

kumpulan proses, dilaksanakan berdasarkan proses pengurusan Pengurus modul SwooleServer. Ia boleh mengurus pelbagai proses kerja Berbanding dengan Proses untuk melaksanakan pelbagai proses, ProcessPool lebih mudah dan mempunyai tahap pengkapsulan yang lebih tinggi tanpa menulis terlalu banyak kod, mereka boleh mencipta gaya coroutine tulen dan boleh digunakan berbilang teras program pelayan CPU.

Kumpulan proses Swoole melaksanakan pembacaan data redis

Dalam kes berikut, kumpulan proses Redis dimulakan melalui WorkerStart dan data senarai Redis dibaca secara berterusan apabila WorkerStop terputus semua sambungan Kitar semula semua proses kanak-kanak.

Langkah 1: Kod pengekodan

Fail: d10.php

<?php

use Swoole\Process;
use Swoole\Coroutine;

// 指定5个工作进程
$pool = new Process\Pool(5);
// 设置启用协程
$pool->set([&#39;enable_coroutine&#39; => 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(&#39;127.0.0.1&#39;, 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();

Langkah 2: Mulakan perkhidmatan Redis dan tulis data senarai melalui klien

Kes ini memerlukan PHP untuk memasang sambungan redis

# 通过redis客户端连接
./redis-cli

127.0.0.1:6379> lpush key1 &#39;world&#39;

Salin kod

Langkah 3: Jalankan d10.php

php d10.php

Langkah 4: Lihat proses

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

Langkah 5: Hasil keluaran

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

Selepas dijalankan, fail d10.php akan sentiasa disekat dan membaca data senarai redis Setelah senarai Redis dikeluarkan, ia akan serta-merta muncul dan dicetak pada skrin.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara PHP membenarkan kumpulan proses Swoole/Pool untuk melaksanakan sambungan berterusan Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:ziruchu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam