Join 4,000+ others and never miss out on new tips, tutorials, and more.
4.x is outdated, please check the latest version 22.x
Latest version:
pecl install openswoole-22.1.2
Manage a pool of Linux worker processes with Swoole. It can be used to manage a group of worker processes to process messages in MQ like Redis or sent from client side. Native Linux commands can also be executed by the pool of processes.
When a process in the pool is terminated, the pool starts a replacement process automatically.
Swoole\Process\Pool::__construct
Swoole\Process\Pool->set
Swoole\Process\Pool->on
Swoole\Process\Pool->getProcess
Swoole\Process\Pool->listen
Swoole\Process\Pool->start
Swoole\Process\Pool->shutdown
Swoole\Process\Pool->write
Swoole\Process\Pool->detach
Swoole\Process\Pool->on('start', fn)
Swoole\Process\Pool->on('stop', fn)
Swoole\Process\Pool->on('workerstart', fn)
Swoole\Process\Pool->on('workerstop', fn)
Swoole\Process\Pool->on('message', fn)
<?php
$workerNum = 10;
$pool = new Swoole\Process\Pool($workerNum);
$pool->on("WorkerStart", function ($pool, $workerId) {
echo "Worker#{$workerId} is started\n";
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$key = "key1";
while (true) {
$msgs = $redis->brpop($key, 2);
if ( $msgs == null) continue;
var_dump($msgs);
}
});
$pool->on("WorkerStop", function ($pool, $workerId) {
echo "Worker#{$workerId} is stopped\n";
});
$pool->start();