curl_exec不返回数据

时间:2011-12-07 03:39:51

标签: php

由于某些原因,当我迭代一些网址时,下面的代码,curl_exec永远不会返回任何内容。我已经验证了它获得的网址是否正确。我已手动检查它们以查看是否有输出。我已经尝试删除CURLOPT_RETURNTRANSFER,curl_exec将返回true。我不确定为什么curl_exec没有返回我需要的数据。

function _curl_get($urls)
{
    $html_str = '';
    foreach ($urls as $url)
    {
        $curl_handle=curl_init();
        curl_setopt($curl_handle, CURLOPT_URL, $url);
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
        $html_str .= curl_exec($curl_handle);
        curl_close($curl_handle);
    }

    return $html_str;
}

1 个答案:

答案 0 :(得分:6)

检查错误:

$data = curl_exec($curl_handle);
if ($data === FALSE) {
   die(curl_error($curl_handle));
} else {
   $html_str .= $data;
}

永远不要假设依赖外部资源的操作成功。只有一种方法可以正常运行,而且几乎有成百上千种方法可以解决问题。假设发生1:100或1:1000的机会是不好的方法。

从效率上来说,没有必要重复实例化/关闭卷曲对象。您可以将其重复用于多个网址。特别是因为它们都以同样的方式被取出。在循环外部创建一个curl句柄,在循环内重复使用它(每次都设置url),然后在循环结束后关闭它。