日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

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

發布時間:2024/9/20 php 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于curl的php多线程类(异步请求) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源:http://blog.csdn.net/sunjier/article/details/8375073

  • <?php??
  • /**?
  • ?*?@name?CurlRequest?php?請求類?
  • ?*?@license?基于curl?實現,?可模擬多線程任務?
  • ?*/??
  • class?CurlRequest??
  • {??
  • ????/**?
  • ?????*?@name?成員變量?
  • ?????*/??
  • ????//?param??
  • ????protected?$url;?????????//?url參數??
  • ????protected?$data;????????//?data參數??
  • ????//?request??
  • ????protected?$request_url??????????????=?'';???????//?請求地址??
  • ????protected?$request_data?????????????=?array();??//?請求參數??
  • ????protected?$request_timeout??????????=?30;???????//?請求超時時間(單位秒)??0為無限等待??
  • ??
  • ????/**?
  • ?????*?@name?請求地址?
  • ?????*?@param?$url?
  • ?????*/??
  • ????public?function?url($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?為數組?
  • ?????*/??
  • ????public?function?data($data)??
  • ????{??
  • ????????$this->request_data?=?array_merge($this->request_data,?$data);??
  • ????????return?$this;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?@name?請求超時時間?
  • ?????*?@param?$timeout?超時,?當timeout?為0?或?flase時,?類為多線程執行?
  • ?????*/??
  • ????public?function?timeout($timeout)??
  • ????{??
  • ????????//?$this->request_timeout????=?(int)$timeout==0???1?:?(int)$timeout;??
  • ????????$this->request_timeout???=?(int)$timeout;??
  • ????????return?$this;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?@name?get請求?
  • ?????*?@return?mixed?[status,?data]?
  • ?????*/??
  • ????public?function?get()??
  • ????{??
  • ????????$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;??
  • ????}??
  • ????/**?
  • ?????*?@name?post請求?
  • ?????*?@return?mixed?[status,?data]?
  • ?????*/??
  • ????public?function?post()??
  • ????{??
  • ????????$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;??
  • ????}??
  • } ?

  • 總結

    以上是生活随笔為你收集整理的基于curl的php多线程类(异步请求)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。