小沈同学

精神小伙

php curl 并发处理

默认分类 0 评 6 度
<?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 命令
快来做第一个评论的人吧~