php curl并发

helei 2021-2-1 1,213 2/1
// 创建批处理cURL句柄
        $mh = curl_multi_init();
//创建每一个curl会话
$curl[$count] = curl_init(); // 启动一个CURL会话
            curl_setopt($curl[$count], CURLOPT_URL, $url);
            curl_setopt($curl[$count], CURLOPT_HEADER, 0);
            curl_setopt($curl[$count], CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl[$count], CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
            curl_setopt($curl[$count], CURLOPT_SSL_VERIFYHOST, false);  // 从证书中检查SSL加密算法是否存在
            curl_setopt($curl[$count], CURLOPT_COOKIE , $cookie );
            curl_setopt($curl[$count], CURLOPT_HTTPHEADER, $headers);
            curl_multi_add_handle($mh, $curl[$count]);
// 执行批处理句柄
        do {
            $mrc = curl_multi_exec($mh, $active);
            
        } while ($active > 0);
        $sql = "";
        //获取处理结果
        for($i = 0; $i < $count; $i ++){
            $content  = json_decode(curl_multi_getcontent($curl[ $i ]));
            foreach($content->data->content as $re){
                echo $re->hphm;
            }
            // $data[ $i ] = ( curl_errno($curl[ $i ]) == 0 ) ? $content : false;
        }
        // 关闭全部句柄
        for($i = 0; $i < $count; $i ++){
            curl_multi_remove_handle($mh, $curl[ $i ]);
        }
        curl_multi_close($mh);

各函数作用解释:

curl_multi_init()
初始化一个curl批处理句柄资源。

curl_multi_add_handle()
向curl批处理会话中添加单独的curl句柄资源。curl_multi_add_handle()函数有两个参数,第一个参数表示一个curl批处理句柄资源,第二个参数表示一个单独的curl句柄资源。

curl_multi_exec()
解析一个curl批处理句柄,curl_multi_exec()函数有两个参数,第一个参数表示一个批处理句柄资源,第二个参数是一个引用值的参数,表示剩余需要处理的单个的curl句柄资源数量。

curl_multi_remove_handle()
移除curl批处理句柄资源中的某个句柄资源,curl_multi_remove_handle()函数有两个参数,第一个参数表示一个curl批处理句柄资源,第二个参数表示一个单独的curl句柄资源。

curl_multi_close()
关闭一个批处理句柄资源。

curl_multi_getcontent()
在设置了CURLOPT_RETURNTRANSFER的情况下,返回获取的输出的文本流。

curl_multi_info_read()
获取当前解析的curl的相关传输信息。

- THE END -

helei

2月01日10:11

最后修改:2021年2月1日
0

非特殊说明,本博所有文章均为博主原创。