test1.php
内容<?php
/**
* Created by PhpStorm.
* User: zhangguofu
* Date: 20/5/17
* Time: 上午12:31
*/
echo "process-start-time:" . date("Ymd H:i:s") . PHP_EOL;
$baseUrl = "http://www.baidu.com/";//自定义网页
$count = 1000;//为了方便演示,此处用1000意思一下
for ($i = 0; $i < $count; $i++) {
creatProcess($i, $baseUrl);
}
function creatProcess($i, $url)
{
// 每次过来统计一下进程数量
$cmd = "ps -ef |grep test1 |grep -v grep |wc -l";
$pCount = system($cmd);//进程数量
if ($pCount < 200) {
// 创建子进程
$process = new swoole_process(function (swoole_process $worker) use ($i, $url) {
$content = curlData($url);//方法里面处理你的逻辑
});
$pid = $process->start();
echo $url . '------第' . $i . '个子进程创建完毕'.PHP_EOL;
} else {
sleep(10);//可以根据实际情况定义
creatProcess($i, $url);
}
}
function curlData($url)
{
sleep(20);//为了让子进程多存在一段时间,让大家看到效果
$content = file_get_contents($url);
file_put_contents("./sData/baidu.txt","tttttttttttttttt".$content,FILE_APPEND);
}
echo "process-end-time:" . date("Ymd H:i:s");
执行 php test1
查看命令行输出结果
while (true){
echo "Time" . date("Ymd H:i:s").'----------';
sleep(1);
$cmd="ps -ef |grep test1 |grep -v grep |wc -l";
$ret1 = system($cmd);
}
请求1000次,时间一共是144秒,里面还有几次sleep的时间,如果去掉sleep,真实时间48s,当然,逻辑业务不一样,时间也不一样
process-start-time:20200525 18:25:36
process-end-time:20200525 18:26:24