国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - CURL的學(xué)習(xí)和應(yīng)用(附多線程實(shí)現(xiàn))

CURL的學(xué)習(xí)和應(yīng)用(附多線程實(shí)現(xiàn))

2020-04-02 13:50PHP教程網(wǎng) PHP教程

這篇文章主要介紹了CURL的安裝與多線程實(shí)現(xiàn)方法,需要的朋友可以參考下

curl安裝:

windows下面的安裝
:修改php.ini文件的設(shè)置,找到php_curl.dll
//取消下在的注釋extension=php_curl.dll
linux下面安裝:

復(fù)制代碼 代碼如下:

# wget http://curl.haxx.se/download/curl-7.17.1.tar.gz
# tar zxvf curl-7.17.1.tar.gz  //解壓
#cd curl-7.17.1
# ./configure –prefix=/usr/local/curl
# make
# make install



這是安裝php之前安裝的方法.
***************************phpinf查看是否加載成功!
使用curl的POST數(shù)據(jù)飛信接口
用curl 寫了飛信接口吧,網(wǎng)上有很多,這里只是做個(gè)測(cè)試

復(fù)制代碼 代碼如下:

$username = 13800138000;
$password = 123456;
$sendto = 13912345678;
$message = "測(cè)試一個(gè)試試看!";
$curlPost = 'username='.urlencode($username).'&password='.urlencode($password).'&sendto='.urlencode($sendto).'&message='.urlencode($message).'';
$ch = curl_init();//初始化curl
curl_setopt($ch,CURLOPT_URL,'http://sms.api.bz/fetion.php');//抓取指定網(wǎng)頁(yè)
curl_setopt($ch, CURLOPT_HEADER, 0);//設(shè)置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結(jié)果為字符串且輸出到屏幕上
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);//運(yùn)行curl
curl_close($ch);
print_r($data);//輸出結(jié)果



返回的結(jié)果是:短信已提交到發(fā)送隊(duì)列!
飛信接口的地址是http://sms.api.bz/
飛信接口模式:
http://sms.api.bz/fetion.php?username=您的移動(dòng)飛信登錄手機(jī)號(hào)
&password=您的移動(dòng)飛信登錄密碼
&sendto=接收短信的飛信好友手機(jī)號(hào)
&message=短信內(nèi)容
格式:http://sms.api.bz/fetion.php?username=13800138000&password=123456&sendto=13912345678&message=短信內(nèi)容
注意要保持utf-8格式的,這點(diǎn)我犯錯(cuò)了

總結(jié)一下使用curl方法:

初始化curl

使用curl_setopt設(shè)置目標(biāo)url,和其他選項(xiàng),這些選項(xiàng)方法詳細(xì)參考:http://cn2.php.net/manual/zh/ref.curl.php

curl_exec,執(zhí)行curl

執(zhí)行后,關(guān)閉curl
最后一步就是輸出
一個(gè)最要的curl函數(shù):curl_getinfo
curl_getinfo ( resource $ch [, int $opt = 0 ] )

復(fù)制代碼 代碼如下:


<?php
/*curl實(shí)例
*/
$curl = curl_init();
// 設(shè)置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
// 設(shè)置header
curl_setopt($curl, CURLOPT_HEADER, 0);
// 設(shè)置cURL 參數(shù),要求結(jié)果保存到字符串中還是輸出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 運(yùn)行cURL,請(qǐng)求網(wǎng)頁(yè)
$data = curl_exec($curl);
if($data === false){
 echo curl_error($curl);exit;
}
$info = curl_getinfo($curl);
// 關(guān)閉URL請(qǐng)求
curl_close($curl);

 

// 顯示獲得的數(shù)據(jù)
var_dump($info);
var_dump($data);



可以返回:

URLINFO_EFFECTIVE_URL – 最后一個(gè)有效的URL地址
CURLINFO_HTTP_CODE – 最后一個(gè)收到的HTTP代碼
CURLINFO_FILETIME – 遠(yuǎn)程獲取文檔的時(shí)間,如果無(wú)法獲取,則返回值為“-1”
CURLINFO_TOTAL_TIME – 最后一次傳輸所消耗的時(shí)間
CURLINFO_NAMELOOKUP_TIME – 名稱解析所消耗的時(shí)間
CURLINFO_CONNECT_TIME – 建立連接所消耗的時(shí)間
CURLINFO_PRETRANSFER_TIME – 從建立連接到準(zhǔn)備傳輸所使用的時(shí)間
CURLINFO_STARTTRANSFER_TIME – 從建立連接到傳輸開始所使用的時(shí)間
CURLINFO_REDIRECT_TIME – 在事務(wù)傳輸開始前重定向所使用的時(shí)間
CURLINFO_SIZE_UPLOAD – 上傳數(shù)據(jù)量的總值
CURLINFO_SIZE_DOWNLOAD – 下載數(shù)據(jù)量的總值
CURLINFO_SPEED_DOWNLOAD – 平均下載速度
CURLINFO_SPEED_UPLOAD – 平均上傳速度
CURLINFO_HEADER_SIZE – header部分的大小
CURLINFO_HEADER_OUT – 發(fā)送請(qǐng)求的字符串
CURLINFO_REQUEST_SIZE – 在HTTP請(qǐng)求中有問題的請(qǐng)求的大小
CURLINFO_SSL_VERIFYRESULT – 通過設(shè)置CURLOPT_SSL_VERIFYPEER返回的SSL證書驗(yàn)證請(qǐng)求的結(jié)果
CURLINFO_CONTENT_LENGTH_DOWNLOAD – 從Content-Length: field中讀取的下載內(nèi)容長(zhǎng)度
CURLINFO_CONTENT_LENGTH_UPLOAD – 上傳內(nèi)容大小的說明
CURLINFO_CONTENT_TYPE – 下載內(nèi)容的Content-Type:值,NULL表示服務(wù)器沒有發(fā)送有效的Content-Type: header   

使用curl實(shí)現(xiàn)多線程

curl一般用來抓取網(wǎng)頁(yè),第二種就是get或者post數(shù)據(jù),第三種應(yīng)用就是實(shí)現(xiàn)PHP的多線程任務(wù)
下面來實(shí)現(xiàn)多線程的

復(fù)制代碼 代碼如下:

<?php
/*
curl 多線程抓取
*/
 /**
     * curl 多線程
     * 
     * @param array $array 并行網(wǎng)址
     * @param int $timeout 超時(shí)時(shí)間
     * @return array
     */
 function Curl_http($array,$timeout){
  $res = array();
  $mh = curl_multi_init();//創(chuàng)建多個(gè)curl語(yǔ)柄
 $startime = getmicrotime();
  foreach($array as $k=>$url){
   $conn[$k]=curl_init($url);

        curl_setopt($conn[$k], CURLOPT_TIMEOUT, $timeout);//設(shè)置超時(shí)時(shí)間
        curl_setopt($conn[$k], CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        curl_setopt($conn[$k], CURLOPT_MAXREDIRS, 7);//HTTp定向級(jí)別
        curl_setopt($conn[$k], CURLOPT_HEADER, 0);//這里不要header,加塊效率
        curl_setopt($conn[$k], CURLOPT_FOLLOWLOCATION, 1); // 302 redirect
        curl_setopt($conn[$k],CURLOPT_RETURNTRANSFER,1);
        curl_multi_add_handle ($mh,$conn[$k]);
  }
  //防止死循環(huán)耗死cpu 這段是根據(jù)網(wǎng)上的寫法
  do {
   $mrc = curl_multi_exec($mh,$active);//當(dāng)無(wú)數(shù)據(jù),active=true
  } while ($mrc == CURLM_CALL_MULTI_PERFORM);//當(dāng)正在接受數(shù)據(jù)時(shí)
  while ($active and $mrc == CURLM_OK) {//當(dāng)無(wú)數(shù)據(jù)時(shí)或請(qǐng)求暫停時(shí),active=true
   if (curl_multi_select($mh) != -1) {
    do {
     $mrc = curl_multi_exec($mh, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
   }
  }

  foreach ($array as $k => $url) {
     curl_error($conn[$k]);
       $res[$k]=curl_multi_getcontent($conn[$k]);//獲得返回信息
       $header[$k]=curl_getinfo($conn[$k]);//返回頭信息
       curl_close($conn[$k]);//關(guān)閉語(yǔ)柄
       curl_multi_remove_handle($mh  , $conn[$k]);   //釋放資源 
  }

  curl_multi_close($mh);
  $endtime = getmicrotime();
  $diff_time = $endtime - $startime;

  return array('diff_time'=>$diff_time,
      'return'=>$res,
     'header'=>$header  
     );

 }
 //計(jì)算當(dāng)前時(shí)間
 function getmicrotime() {
     list($usec, $sec) = explode(" ",microtime());
     return ((float)$usec + (float)$sec);
 }

 //測(cè)試一下,curl 三個(gè)網(wǎng)址
 $array = array(
    "http://www.weibo.com/",
    "http://www.renren.com/",
    "http://www.qq.com/"
    );
 $data = Curl_http($array,'10');//調(diào)用
 var_dump($data);//輸出

?>



關(guān)于do while的那段解釋:

因?yàn)?active要等全部url數(shù)據(jù)接受完畢才變成false,所以這里用到了curl_multi_exec的返回值判斷是否還有數(shù)據(jù),
當(dāng)有數(shù) 據(jù)的時(shí)候就不停調(diào)用curl_multi_exec,暫時(shí)沒有數(shù)據(jù)就進(jìn)入select階段,新數(shù)據(jù)一來就可以被喚醒繼續(xù)執(zhí)行。
這里的好處就是CPU的無(wú)謂 消耗沒有了。更詳細(xì)的說明:http://hi.baidu.com/%D4%C2%D2%B9%C4%FD%ED%F8/blog/item/9dfcf4fbe6b84374024f563d.html
 

 

這個(gè)多線程的寫法步驟:
第一步:調(diào)用curl_multi_init
第二步:循環(huán)調(diào)用curl_multi_add_handle
這一步需要注意的是,curl_multi_add_handle的第二個(gè)參數(shù)是由curl_init而來的子handle。
第三步:持續(xù)調(diào)用curl_multi_exec
第四步:根據(jù)需要循環(huán)調(diào)用curl_multi_getcontent獲取結(jié)果
第五步:調(diào)用curl_multi_remove_handle,并為每個(gè)字handle調(diào)用curl_close
第六步:調(diào)用curl_multi_close
多線程的測(cè)試效果圖:

CURL的學(xué)習(xí)和應(yīng)用(附多線程實(shí)現(xiàn))

總結(jié):36個(gè)http請(qǐng)求,從執(zhí)行的是時(shí)間順序上來看,三個(gè)網(wǎng)站的ip交叉,說明是同時(shí)并發(fā)的!
—————————————————————————
linux命令下的curl
幾種常見的使用方式:
下載作用:
直接下載 相當(dāng)于wget
curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
批量下載screen1.JPG–screen10.JPG
curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG
斷點(diǎn)下載
curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG


反向代理功能
curl -x 123.45.67.89:1080 -o page.html http://www.yahoo.com
顯示頭文件
curl -I www.sina.com

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久精品中文字幕一区二区 | 91五月天| 成人欧美亚洲 | 在线成人av | 成av在线 | 欧美日韩电影一区二区 | 九九综合久久 | 伊人色综合网 | 黄色一级片免费观看 | 久久久高清 | 欧美亚洲国产日韩 | 综合二区| 999久久久国产999久久久 | 久久久在线 | 精品美女 | 国产精品久久久久久久久久新婚 | 日本不卡免费新一二三区 | 欧美日本精品 | 亚洲一区二区中文字幕 | 一区视频 | 亚洲毛片a | 成人高清 | 国产成人精品一区二区三区四区 | 国产成人综合av | 岛国搬运工av在线播放 | 黄视频免费观看 | 欧美一区二区三区在线观看 | 亚洲日本乱码一区两区在线观看 | 99精品99| 国产精品久久久久久久久 | 91精品一久久香蕉国产线看观看新通道出现 | 色视频www在线播放国产人成 | 日韩在线网址 | 欧美视频成人 | 久久久久久免费视频 | 国产精品久久久久久亚洲调教 | 日韩中文一区二区三区 | 69日影院 | 日韩一区二区在线观看 | 欧美午夜一区二区三区免费大片 | 最好看的2019年中文在线观看 |