swoole_process实现多进程示例
. swoole_process 是swoole提供的进程管理模块,用来替代PHP的pcntl扩展。
首先,确保安装的swoole版本大于1.7.2
$ php --ri swoole
swoole
swoole support => enabled
Version => 1.10.1
实例代码(本例会分别创建一个子进程来消费。消费的时候故意sleep了1秒)
<?php
echo date("Y-m-d H:i:s").PHP_EOL;
$workers = [];
$urls = [
'https://www.baidu.com',
'https://sina.com.cn',
'http://news.pconline.com.cn/1165/11651127.html',
'https://www.nanrenwo.net/zlht/141729.html',
'http://www.lc123.net/xw/rd/2018-08-27/981629.html'
];
for ($i=0; $i < count($urls); $i++) {
$process = new swoole_process(function(swoole_process $worker) use($i,$urls){
$content = urlData($urls[$i]);
echo $content.PHP_EOL;
},true);
$pid = $process->start();
$workers[$pid] = $process;
}
foreach ($workers as $process) {
echo $process->read();
}
function urlData($url)
{
sleep(1);
echo $url.'success'.PHP_EOL;
}
echo date("Y-m-d H:i:s").PHP_EOL;
结果查看
- 按道理是6秒钟执行完成.但是使用子进程只用了一秒钟
以上是学习测试swoole创建子进程示例