swoole多进程使用场景,我这以访问多个url地扯作为测试,帮大家快速理解swoole多程进的使用,看下面php代码:
<?php
//swoole多进程使用场景
echo "进程开始时间:".date("Y-m-d H:i:s").PHP_EOL;;
$urls = [
"https://www.baidu.com/",
"https://www.hao123.com/",
"https://www.qq.com/",
"https://www.163.com/",
"https://www.jd.com/",
"https://ai.taobao.com/",
"https://www.sina.com.cn/",
"https://bj.58.com/",
"https://www.hupu.com/",
"https://www.mgtv.com/",
];
$works = [];
for($i = 0; $i < count($urls); $i++){
//创建一个子进程
$process = new Swoole\Process(function (Swoole\Process $pro)
use ($i,$urls){
$content = curlDate($urls[$i]);
// 把数据写入管道
// echo $content.PHP_EOL;//第三个参数为true,输出会到父进程的管道里,到管道里取值
$pro->write($content.PHP_EOL);
},true);
$pid = $process->start();
$works[$pid] = $process;
// echo $pid.PHP_EOL;
}
//输出管道里的值
foreach ($works as $process){
// 读取管道里的值
echo $process->read();
}
echo "进程结束时间:".date("Y-m-d H:i:s").PHP_EOL;;
//模拟请求url的内容
function curlDate($url){
sleep(1);
return $url." success".PHP_EOL;
}
在linux终端运行代码郊果如下:
我这在代码里使用sleep等待1s,程序1s就执行完了