2013-03-06 207 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