php curl 多线程

$offmh = curl_multi_init();   //开启curl多线程
foreach ($offer as $i => $url) {
	$conn[$i] = curl_init($url);  //开启curl
	curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, true);// 执行后不直接打印出来
	curl_setopt($conn[$i], CURLOPT_POST, true); //设置请求方式为post
	curl_setopt($conn[$i], CURLOPT_POSTFIELDS,$post_data);//post的变量
	curl_setopt($conn[$i], CURLOPT_HEADER ,false); // 请求头,可以传数组
	curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"); //在HTTP请求中包含一个”user-agent”头的字符串。 
	curl_setopt($conn[$i], CURLOPT_SSL_VERIFYPEER, false);	// 跳过证书检查
	curl_setopt($conn[$i], CURLOPT_SSL_VERIFYHOST, false);	// 不从证书中检查SSL加密算法是否存在
	curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,10); 	//标识如果服务器10秒内没有响应,脚本就会断开连接;
	curl_multi_add_handle ($offmh,$conn[$i]); //创建n个cURL句柄,把它们加到批处理句柄,然后并行地运行它们。
}  
// 执行批处理句柄
$active = null;
do{
	$mrc = curl_multi_exec($offmh,$active);//当无数据,active=true
} while ($mrc == CURLM_CALL_MULTI_PERFORM);//当正在接受数据时
while ($active && $mrc == CURLM_OK) {//当无数据时或请求暂停时,active=true
	do{
		$mrc = curl_multi_exec($offmh, $active);
	}while($mrc == CURLM_CALL_MULTI_PERFORM);
}		
foreach ($offer as $k => $url) {
	$dooffer = curl_multi_getcontent($conn[$k]);//获得返回信息
	//处理数据
	curl_close($conn[$k]);//关闭语柄
	curl_multi_remove_handle($offmh, $conn[$k]);//释放资源  
}
curl_multi_close($offmh);  //关闭curl多线程
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值