2013-03-06 211 views
2

我正在尋找一些關於我的CurL代碼的幫助。我試圖執行多個URL,但它只運行最後的結果。發送多個CuRL請求

這裏是我的代碼:

function executeCurl($data) { 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, trim($data['url'])); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

//execute post 
$result = curl_exec($ch); 
curl_close($ch); 
unset($data,$url,$ch); 

//close connection 
} 

林在循環運行executeCurl但只執行最後的結果。

+0

你並不真的需要取消設置的語句。另外,不知何故,我不認爲這個問題是在這個代碼中。 – 2013-03-06 05:46:05

+0

您正在使用阻止捲曲界面。 – 2013-03-06 05:46:44

回答

1

好像$result是問題所在。 我假設$結果是全局定義......這意味着,每次運行executeCurl()時間

,該$result被覆蓋。 因此,當你的循環完成,你看看$result,你所有的就是你的最後executeCurl()的結果。

您應該返回$ result,並執行您需要對每個循環的結果執行的操作。

這是一個示例代碼,可以幫助你:

// Add a return to your executeCurl function 
function executeCurl($data) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, trim($data['url'])); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 

    //execute post 
    $result = curl_exec($ch); 
    curl_close($ch); 
    unset($data,$url,$ch); 

    //return the result 
    return $result; 
} 

// Your loop 
$results = array(); 
for ($i=0;$i<count($dataList), $i++) { // $dataList is whatever your list of datas are 
    $results[$i] = executeCurl($dataList[$i]); 
} 

// Check out your results 
print_r($results); 
+0

我想我知道問題是什麼。我請求的網址上有Javascript。因爲它在while循環中執行的頁面也會執行兩次(或更多)javascript。我是對的? – Kenny 2013-03-06 06:12:30

+0

@Kenny JavaScript不是問題,因爲Javascript不能在CURL上運行。但是,如果你確實相信,可以嘗試使用諸如「http:// www.google.com」之類的URL來測試CURL循環。你有沒有嘗試過我建議的解決方案?它怎麼樣? (或有沒有你不明白的部分?) – ashiina 2013-03-06 06:28:18

+0

是的,它的工作,但在執行頁面上有一個JavaScript的onload函數,將imgdata張貼到一個PHP文件與jquery ......並有我的問題,因爲我可以看到在鉻調試器,它只能做2個請求,而不是10 ...但這篇文章幫助了我,我不得不做另一個爲我現在得到的JavaScript問題。 – Kenny 2013-03-06 06:40:05