小沈同学

精神小伙

php curl 并发处理

默认分类 0 评

<?php

namespace app\common\controller;
class Curl
{

public function createUrl($url, $query)
{
    $query = http_build_query($query);
    $url .= $query;
    return $url;
}


public function singleCurl($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    return $ch;
}

//多进程curl
public function multiCurl($ch_arr)
{
    $mh = curl_multi_init();
    foreach ($ch_arr as $k => $c) {
        curl_multi_add_handle($mh, $ch_arr[$k]);
    }
    //执行批处理
    $active = null;
    do {
        $mrc = curl_multi_exec($mh, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);

    while ($active && $mrc == CURLM_OK) {
        usleep(50000);
        if (curl_multi_select($mh) != -1) {
            do {
                $mrc = curl_multi_exec($mh, $active);
            } while ($mrc == CURLM_CALL_MULTI_PERFORM);
        }
    }

    foreach ($ch_arr as $k => $v) {
        if (curl_error($ch_arr[$k]) == '') {
            $res[$k] = json_decode(curl_multi_getcontent($ch_arr[$k]), true);
        }
        curl_close($ch_arr[$k]);
    }
    curl_multi_close($mh);
    return $res;
}

}

ipmitool raw 命令
快来做第一个评论的人吧~