«

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

时间:2024-2-21 13:18     作者:韩俊     分类: PHP


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

<?php

$s_time = time();

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

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

//模拟地址
$curl = [
    'https://www.baidu.com/',
    'https://www.maopiaopiao.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;

标签: php php教程

热门推荐