Swoole 多进程 curl 抓取页面

版权声明:潘广宇博客, https://blog.csdn.net/panguangyuu/article/details/88393617
<?php

// 12个url待进行访问
$url = array(
    "http://www.baidu.com",
    "http://www.sohu.com",
    "http://www.qq.com",
    "http://www.iqiyi,com",
    "http://www.hao123.com",
    "http://www.taobao.com",
    "http://www.weibo.com",
    "http://www.sina.com.cn",
    "http://www.toutiao.com",
    "http://www.meituan.com",
    "http://www.youku.com",
    "http://www.tudou.com"
);

// 开启3个子进程
for ($i=0; $i<3; $i++) {
    $process = new swoole_process("main", true);
    $process->start();
    echo $process->read();
}


function main(swoole_process $worker) {

    $startTime = microtime(true);

    /* 获取进程的id */

    $processid = $worker->pid % 3;

    /* 依次分配url给进程处理 */

    global $url;

    $pointer = $processid;

    while ($pointer <= count($url) - 1) {
        curl($url[$pointer]);
        $pointer = $pointer + 3;
    }

    $endTime = microtime(true);

    $wasteTime = $endTime - $startTime;

    echo "进程 " . $processid . " 耗时 " . $wasteTime . " 秒" . PHP_EOL;
}


function curl($url) {

    $ch  = curl_init();

    //设置你需要抓取的URL
    curl_setopt($ch, CURLOPT_URL, $url);

    // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $data = curl_exec($ch);

    curl_close($ch);

    return $data;
}


/* 输出结果 */

进程 0 耗时 0.2741539478302 秒
进程 2 耗时 0.28703999519348 秒
进程 1 耗时 0.89358496665955 秒

猜你喜欢

转载自blog.csdn.net/panguangyuu/article/details/88393617