人人人妻人人人妻人人人,99精品国产综合久久久久五月天 ,欧美白人最猛性XXXXX,日韩AV无码免费播放

News新聞

業(yè)界新聞動態(tài)、技術前沿
Who are we?

您的位置:首頁      樂道系統(tǒng)FAQ      PHP對CURL函數的使用

PHP對CURL函數的使用

標簽: 發(fā)布日期:2014-03-17 00:00:00 716

PHP在LINUX上可以利用CURL程序進行一些http的交互,甚至包括網站登錄,POST請求等。當然要求系統(tǒng)帶CURL,其次版本還要7以上,具體可參考手冊。

首先看下最簡單的獲取一個HTTP頁面的寫法:

 


$url = "http://www.163.com"//以163為例
$session = curl_init($url);

curl_exec(
$session);

if (curl_errno($session))  //出錯處理
    echo curl_error($session);
curl_close(
$session);

 

功能就是GET 163的主頁。然后更進一步,使用curl_setopt函數做些調整。

然后看個復雜點的,作用是登錄網站。

 


$url = "http://www.abc.com/login.php";
$postargs = "name=jack&password=123456";

$session = curl_init($url);
    
//設置postargs參數,就POST出去

curl_setopt(
$session, CURLOPT_POST, true);
curl_setopt(
$session, CURLOPT_POSTFIELDS, $postargs);


//是否返回header信息,一般可用于檢查http返回狀態(tài)值
curl_setopt($session, CURLOPT_HEADER, true);

//使用cookie,可以用于登錄操作,注意需要對應的目錄權限
curl_setopt($session,CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt(
$session,CURLOPT_COOKIEJAR, "cookie.txt");

//將返回結果寫入變量
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$ret = curl_exec($session);

if (curl_errno($session)) {
    
echo curl_error($session);
}

curl_close(
$session);

//輸出結果,在這之后可以相應的parse自己需要的東西
echo $ret;

 

需要注意的就是header頭,我們可以用來檢查HTTP狀態(tài)結果,例如服務器返回302讓客戶端做跳轉等的操作。另外還可以發(fā)送HEADER信息,用來認證。

CURL還能用于并發(fā)操作,多線程的并發(fā),比C#那個偽的強哦。。并發(fā)處理的例子:

 


$url1 = "http://www.abc.com/test1.php";
$url2 = "http://www.abc.com/test2.php";

$cl1 = curl_init();  //初始化2個用于線程操作的
$cl2 = curl_init();

curl_setopt(
$cl1,CURLOPT_URL,$url1);
curl_setopt(
$cl2,CURLOPT_URL,$url2);

//繼續(xù)用cookie文件,假設我們剛才已經登錄,需要保持會話的話
curl_setopt($cl1, CURLOPT_RETURNTRANSFER, true);
curl_setopt(
$cl1, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt(
$cl1, CURLOPT_COOKIEJAR, "cookie.txt");

curl_setopt(
$cl2, CURLOPT_RETURNTRANSFER, true);
curl_setopt(
$cl2, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt(
$cl2, CURLOPT_COOKIEJAR, "cookie.txt");

$mh = curl_multi_init(); //主要靠這個初始化多線程的

curl_multi_add_handle(
$mh,$cl1);
curl_multi_add_handle(
$mh,$cl2);

$running = null;
do{
    curl_multi_exec(
$mh,$running);
while($running > 0); //跑完后running會被置0

//獲取返回結果

$ret = array();
$ret[] = curl_multi_getcontent($cl1);
$ret[] = curl_multi_getcontent($cl2);

//關閉
curl_multi_remove_handle($mh,$cl1);
curl_multi_remove_handle(
$mh,$cl2);

curl_multi_close(
$mh);

 

說明一下,這里繼續(xù)用到cookie,可以讓CURL在發(fā)送請求的同時把cookie的內容也header上去,這樣就保持了會話。多個并發(fā)的操作其實也類似,就是把幾個分別設置完,然后一起加到multi那個函數里,然后一并發(fā)送。

 


 

補充:

使用代理的方法,可以通過