<?php
// 多进程应用 循环数据处理
class DataDispose
{
public function index()
{
echo '测试开始--'. date('Y-m-d H:i:s'). PHP_EOL;
// 生成测试数组
$datas = range(0, 9);
foreach ($datas as $data) {
// 开启子进程
$process = new Swoole\Process(function ($pro) use($data) {
// 业务代码
$content = self::dispose($data);
// 将数据写入管道
$pro->write($content. PHP_EOL);
}, true);
// 启动子进程
$process->start();
// 将各个进程的数据放到数组中
$workers[] = $process;
}
foreach ($workers as $process) {
// 读取管道中数据
echo $process->read();
}
echo '测试结束--'. date('Y-m-d H:i:s'). PHP_EOL;
}
/**
* 模拟逻辑处理 假设每次处理时间为 1s
* @param $data
* @return string
*/
private static function dispose($data)
{
sleep(1);
return $data. '成功了';
}
}
(new DataDispose())->index();
下面是执行结果:
[root@VM-0-15-centos process]# php DataDispose.php
测试开始--2021-03-16 16:56:29
0成功了
1成功了
2成功了
3成功了
4成功了
5成功了
6成功了
7成功了
8成功了
9成功了
测试结束--2021-03-16 16:56:30