由于某种原因,当我迭代一些网址时,下面的代码,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;
}
Run Code Online (Sandbox Code Playgroud)
检查错误:
$data = curl_exec($curl_handle);
if ($data === FALSE) {
die(curl_error($curl_handle));
} else {
$html_str .= $data;
}
Run Code Online (Sandbox Code Playgroud)
永远不要假设依赖外部资源的操作成功.只有一种方法可以正常运行,而且几乎有成百上千种方法可以解决问题.假设发生1:100或1:1000的机会是不好的方法.
从效率上来说,没有必要重复实例化/关闭卷曲对象.您可以将其重复用于多个网址.特别是因为它们都以同样的方式被取出.在循环外部创建一个curl句柄,在循环内重复使用它(每次都设置url),然后在循环结束后关闭它.