1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 基于curl的php多线程类(异步请求)

基于curl的php多线程类(异步请求)

时间:2023-10-03 00:56:11

相关推荐

基于curl的php多线程类(异步请求)

来源:/sunjier/article/details/8375073

<?php /** *@nameCurlRequestphp请求类 *@license基于curl实现,可模拟多线程任务 */ classCurlRequest { /** *@name成员变量 */ //param protected$url;//url参数 protected$data;//data参数 //request protected$request_url='';//请求地址 protected$request_data=array();//请求参数 protected$request_timeout=30;//请求超时时间(单位秒)0为无限等待 /** *@name请求地址 *@param$url */ publicfunctionurl($url) { $this->url=$url; $parseUrl=parse_url($url); $this->request_url=''; $this->request_url.=$parseUrl['scheme']=='https'?'https://':'http://'; $this->request_url.=$parseUrl['host']; $this->request_url.=$parseUrl['port']?':'.$parseUrl['port']:':80'; $this->request_url.=$parseUrl['path']; parse_str($parseUrl['query'],$parseStr); $this->request_data=array_merge($this->request_data,$parseStr); return$this; } /** *@name请求数据 *@param$data为数组 */ publicfunctiondata($data) { $this->request_data=array_merge($this->request_data,$data); return$this; } /** *@name请求超时时间 *@param$timeout超时,当timeout为0或flase时,类为多线程执行 */ publicfunctiontimeout($timeout) { //$this->request_timeout=(int)$timeout==0?1:(int)$timeout; $this->request_timeout=(int)$timeout; return$this; } /** *@nameget请求 *@returnmixed[status,data] */ publicfunctionget() { $returnData; //1.初始化 $ch=curl_init(); //2.设置选项,包括URL $url=$this->request_url.'?'.http_build_query($this->request_data); curl_setopt($ch,CURLOPT_HTTPGET,1);//请求类型get curl_setopt($ch,CURLOPT_URL,$url);//请求地址 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//将curl_exec()获取的信息以文件流的形式返回,不直接输出。 curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$this->request_timeout);//连接等待时间 curl_setopt($ch,CURLOPT_TIMEOUT,$this->request_timeout);//curl允许执行时间 //3.执行并获取返回内容 $output=curl_exec($ch); if($output===false) { $returnData['status']=0; $returnData['data']=curl_error($ch); } else { $returnData['status']=1; $returnData['data']=$output; } //4.释放curl句柄 curl_close($ch); return$returnData; } /** *@namepost请求 *@returnmixed[status,data] */ publicfunctionpost() { $returnData; //1.初始化 $ch=curl_init(); //2.设置选项,包括URL curl_setopt($ch,CURLOPT_POST,1);//请求类型post curl_setopt($ch,CURLOPT_URL,$this->request_url);//请求地址 curl_setopt($ch,CURLOPT_POSTFIELDS,$this->request_data);//请求数据 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//将curl_exec()获取的信息以文件流的形式返回,不直接输出。 curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$this->request_timeout);//连接等待时间 curl_setopt($ch,CURLOPT_TIMEOUT,$this->request_timeout);//curl允许执行时间 //3.执行并获取返回内容 $output=curl_exec($ch); if($output===false) { $returnData['status']=0; $returnData['data']=curl_error($ch); } else { $returnData['status']=1; $returnData['data']=$output; } //4.释放curl句柄 curl_close($ch); return$returnData; } }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。