curl 同时发送多个请求

// 创建一对cURL资源
$ch1 = curl_init();
$ch2 = curl_init();

// 设置URL和相应的选项
curl_setopt($ch1, CURLOPT_URL, "http://test.cm/a.php/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt ( $ch1, CURLOPT_RETURNTRANSFER, 1 );

curl_setopt($ch2, CURLOPT_URL, "http://testd.cm/b.php");

curl_setopt($ch2, CURLOPT_HEADER, 0);
curl_setopt ( $ch2, CURLOPT_RETURNTRANSFER, 1 );

// 创建批处理cURL句柄
$mh = curl_multi_init();

// 增加2个句柄
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$running=null;
// 执行批处理句柄
do {
    //处理所有的请求,知道全部执行完毕
    curl_multi_exec($mh,$running);
} while($running > 0);

//根据句柄获取每个请求对应的返回的内容
$a = curl_multi_getcontent($ch1);
ee($a);
ee(curl_error($ch1)); //单个请求出错,不会影响到其他请求

$b = curl_multi_getcontent($ch2);
ee($b);

// 关闭全部句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
时间: 2025-01-08 04:57:42

curl 同时发送多个请求的相关文章

php CURL 发送get,post请求

// 发送一个get请求 $url 发送地址    function get($url)    {        //初始化操作        $curl = curl_init($url);        //设置请求参数        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//设置结果的转换        curl_setopt($curl, CURLOPT_TIMEOUT, 10);//设置超时时间        // 发送请求    

php 中使用cURL发送get/post请求,上传图片,批处理

cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1 初始化        2 设置选项,包括url        3  执行并获取结果   4 释放curl句柄. 在工作和学习中,我也是时常用的curl.由于在使用curl设置选项时,各种选项比较难以记忆,需要参考,故在此记录下常用的一些例子,以便后来参考. 实例一 : 抓取网页数据(以拉手网开放api为例,也是g

Linux curl 命令模拟 POST/GET 请求

curl 命令,是一个利用URL规则在命令行下工作的文件传输工具. curl 支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具. 作为一款强力工具,curl支持包括HTTP.HTTPS.FTP等众多协议,还支持 GET.POST.cookies.认证.从指定偏移处下载部分文件.用户代理字符串.限速.文件大小.进度条等特征,还可以做网页处理流程和数据检索自动化. 在进行web后台程序开发测试过程中,常常会需要发送url进行测试,使用curl可以方便地模拟出符合需求的ur

PHP通过curl向其它服务器发请求并返回数据

在很多时候,我们都需要请求第三方的服务器来获取一些数据,比如token,比如百度的主动推送,那么我们的php如何实现向第三方服务器发请求呢?我们可以通过curl来实现 首先定义请求的url,然后创建httpHeader的头,定义通过post方式发送请求的参数: 初始化curl: 1 $url="URL地址"; 2 3 //然后创建httpHeader的头: 4 5 $httpHeader=createHttpHeader(); 6 7 //定义通过post方式发送请求的参数: 8 9

调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案

第一次调用webapi出错如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>IIS 7.5 详细错误 - 4

浏览器下载文件时一共发送2次请求,如何把“下载次数”只记录为1次?

最近,个人官网实现了PDF下载功能,出于统计的考虑,增加了"下载次数"download_count这个字段. 但是,我今天突然发现,每次下载download_count都直接+2了.如果服务器发生这种事,还有一定的可能,本地就我一个人下载,怎么可能下载2次.于是,打开了log4j的debug模式,果然执行了2次更新请求. @RequestMapping(value = "/download/pdf") public void downloadPdf(@Request

[NIO]用dawn发送接收HTTP请求

HTTP协议的下层使用的是tcp,所以我们建立一个tcp连接就能发送接收http请求.dawn底层使用了nio,但是经过dawn的封装之后,我们在编写代码的时候,就和使用普通的阻塞式socket一样 ,不需要关注nio的api.可以把我们的精力放在业务逻辑的处理上.举例如下,下例的功能就是取回baidu首页: package zhmt.dawn.nio; import java.nio.charset.Charset; import zhmt.dawn.nio.buffer.ScalableDi

解决连接vcenter (客户端无法向服务器发送完整的请求。(基础连接已经关闭:发送时发生错误。)) 问题

vCenter版本 5.5 vCenter 安装在server 2008 r2上面,今天补丁一打,重启后就无法连接vcenter了,起初以为是补丁的问题导致vcenter工作不正常,卸载了补丁依旧无法正常连接. 报未知连接错误,(客户端无法向服务器发送完整的请求.(基础连接已经关闭:发送时发生错误.)) 服务里面 vmware Virtualcenter server 服务启动不了. 倒腾了很久,, 很久   ,,    重装vcenter server 5.5的时候提示 vcenter 443

如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办?

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 理想的RESTful Web API采用面向资源的架构,并使用请求的HTTP方法表示针对目标资源的操作类型.但是理想和现实是有距离的,虽然HTTP协议提供了一系列原生的HTTP方法,但是在具体的网络环境中,很多是不支持的.比如有的浏览器只能发送