php swoole 使用多进程爬取网址示例

 
更多

php swoole 使用多进程爬取网址示例。

<?php

$s_time = time();

echo '开始时间:' . date('H:i:s', $s_time) . PHP_EOL;

//进程数组
$worker = [];

//模拟地址
$curl = [
    'https://www.baidu.com/',
    'https://www.phpernote.com/',
    'https://www.taobao.com/',
    'https://www.jd.com/',
    'https://www.163.com'
];

//模拟爬虫
function curldeta($curl_arr) {
    return file_get_contents($curl_arr);
}

//传统读取模式
/*for ($i = 0; $i < count($curl); $i++) {
    echo curldeta($curl[$i]);
}*/

//创建进程
for ($i = 0; $i < count($curl); $i++) {
    //创建多线程
    $pro = new swoole_process(function (swoole_process $work) use ($i, $curl) {
        //获取网页内容
        $content = curldeta($curl[$i]);
        //写入管道
        $work->write($content . PHP_EOL);
    }, true);
    $pro_id = $pro->start();
    $worker[$pro_id] = $pro;
}

//读取管道内容
foreach ($worker as $v) {
    echo date('Y-m-d H:i:s') . $v->read() . PHP_EOL;
}

//进程回收
swoole_process::wait();

$e_time = time();

echo '结束时间:' . date('H:i:s', $e_time) . PHP_EOL;
echo '所用时间:' . ($e_time - $s_time) . '秒' . PHP_EOL;
打赏

本文固定链接: https://www.cxy163.net/archives/3116 | 绝缘体

该日志由 绝缘体.. 于 2022年09月13日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: php swoole 使用多进程爬取网址示例 | 绝缘体
关键字: , , , ,

php swoole 使用多进程爬取网址示例:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter