35 lines
684 B
PHP
Executable File
35 lines
684 B
PHP
Executable File
<?php
|
|
use Swoole\Timer;
|
|
use Swoole\Process;
|
|
use Swoole\Channel;
|
|
|
|
$chan = new Channel(1024 * 256);
|
|
|
|
$worker_num = 4;
|
|
$workers = array();
|
|
|
|
for ($i = 0; $i < $worker_num; $i++)
|
|
{
|
|
$process = new Process(function ($worker) use ($chan, $i)
|
|
{
|
|
while (true)
|
|
{
|
|
$data = $chan->pop();
|
|
if (empty($data))
|
|
{
|
|
usleep(200000);
|
|
continue;
|
|
}
|
|
echo "worker#$i\t$data\n";
|
|
}
|
|
}, false);
|
|
$process->id = $i;
|
|
$pid = $process->start();
|
|
$workers[$pid] = $process;
|
|
}
|
|
|
|
Timer::tick(2000, function () use ($chan)
|
|
{
|
|
static $index = 0;
|
|
$chan->push("hello-" . $index++);
|
|
}); |