CURL的學習和應用

2021-09-07 23:39:01 字數 3769 閱讀 2277

:修改php.ini檔案的設定,找到php_curl.dll

//取消下在的注釋

extension=php_curl.dll

# wget

# tar zxvf curl-7.17.1.tar.gz  //解壓

#cd curl-7.17.1

# ./configure --prefix=/usr/local/curl

# make

# make install

這是安裝php之前安裝的方法.

***************************phpinf檢視是否載入成功!

用curl 寫了飛信介面吧,網上有很多,這裡只是做個測試

$username = 13800138000;

$password = 123456;

$sendto = 13912345678;

$message = "測試乙個試試看!";

$curlpost = 'username='.urlencode($username).'&password='.urlencode($password).'&sendto='.urlencode($sendto).'&message='.urlencode($message).'';

$ch = curl_init();//初始化curl

curl_setopt($ch,curlopt_url,'');//抓取指定網頁

curl_setopt($ch, curlopt_header, 0);//設定header

curl_setopt($ch, curlopt_returntransfer, 1);//要求結果為字串且輸出到螢幕上

curl_setopt($ch, curlopt_post, 1);//post提交方式

curl_setopt($ch, curlopt_postfields, $curlpost);

$data = curl_exec($ch);//執行curl

curl_close($ch);

print_r($data);//輸出結果

返回的結果是:簡訊已提交到傳送佇列!

飛信介面的位址是

飛信介面模式:

?username=您的移動飛信登入手機號

&password=您的移動飛信登入密碼

&sendto=接收簡訊的飛信好友手機號

&message=簡訊內容

格式:?username=13800138000&password=123456&sendto=13912345678&message=簡訊內容

注意要保持utf-8格式的,這點我犯錯了

乙個最要的curl函式:curl_getinfo

curl_getinfo( resource

$ch [, int

$opt

= 0 ] )

<?php 

/*curl例項

*/$curl = curl_init();

// 設定你需要抓取的url

curl_setopt($curl, curlopt_url, '');

// 設定header

curl_setopt($curl, curlopt_header, 0);

// 設定curl 引數,要求結果儲存到字串中還是輸出到螢幕上。

curl_setopt($curl, curlopt_returntransfer, 1);

// 執行curl,請求網頁

$data = curl_exec($curl);

if($data === false)

$info = curl_getinfo($curl);

// 關閉url請求

curl_close($curl);

// 顯示獲得的資料

var_dump($info);

var_dump($data);

可以返回:curl一般用來抓取網頁,第二種就是get或者post資料,第三種應用就是實現php的多執行緒任務

下面來實現多執行緒的

<?php 

/*curl 多執行緒抓取

*/ /**

* curl 多執行緒

* * @param array $array 並行**

* @param int $timeout 超時時間

//防止死迴圈耗死cpu 這段是根據網上的寫法

do while ($mrc == curlm_call_multi_perform);//當正在接受資料時

while ($active and $mrc == curlm_ok) while ($mrc == curlm_call_multi_perform);

}}

foreach ($array as $k => $url)

curl_multi_close($mh);

$endtime = getmicrotime();

$diff_time = $endtime - $startime;

return array('diff_time'=>$diff_time,

'return'=>$res,

'header'=>$header );}

//計算當前時間

function getmicrotime()

//測試一下,curl 三個**

$array = array(

"","",

"");

$data = curl_http($array,'10');//呼叫

var_dump($data);//輸出

?>

因為$active要等全部url資料接受完畢才變成false,所以這裡用到了curl_multi_exec的返回值判斷是否還有資料,
當有數 據的時候就不停呼叫curl_multi_exec,暫時沒有資料就進入select階段,新資料一來就可以被喚醒繼續執行。
這裡的好處就是cpu的無謂 消耗沒有了。更詳細的說明:
這個多執行緒的寫法步驟:

第一步:呼叫curl_multi_init

第二步:迴圈呼叫curl_multi_add_handle

這一步需要注意的是,curl_multi_add_handle的第二個引數是由curl_init而來的子handle。

第三步:持續呼叫curl_multi_exec

第四步:根據需要迴圈呼叫curl_multi_getcontent獲取結果

第五步:呼叫curl_multi_remove_handle,並為每個字handle呼叫curl_close

第六步:呼叫curl_multi_close

linux命令下的curl

幾種常見的使用方式:

curl應用總結(三)

2 curlcode curl easy setopt curl handle,curloption option,parameter 所有引數和選項設定都是通過這個函式完成的,它告訴libcurl怎樣去進行傳輸。引數handle即為curl easy init 返回的控制代碼,後面根據option...

cURL工具及其應用

curl是利用url語法規定傳輸檔案和資料的工具,支援很多協議,如 http ftp telnet等。curl是乙個通用的庫,並非php獨有。其實,很多功能用file socket系列函式也可以實現,只不過用curl功能更全面,可將複雜的操作簡單化,比如處理cookie 表單提交 檔案上傳等。在ph...

file get content和curl的區別

一 file get contents 1.定義 file get contents 函式將指定 url 的檔案讀入乙個字串並返回。2.語法 file get contents path,include path,context,start,max length path 要讀取的路徑或鏈結。inc...