php – curl_multi_exec会停止,如果一个网址是404,我该如何更改?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – curl_multi_exec会停止,如果一个网址是404,我该如何更改?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2597字,纯文字阅读大概需要4分钟。
内容图文
![php – curl_multi_exec会停止,如果一个网址是404,我该如何更改?](/upload/InfoBanner/zyjiaocheng/828/ecf84e7e81624a3784f2d65dc880494a.jpg)
目前,如果连接的网址不起作用,我的cURL multi exec会停止,所以有几个问题:
1:为什么停止?这对我来说没有意义.
2:我怎样才能继续?
编辑:这是我的代码:
$SQL = mysql_query("SELECT url FROM shells") ;
$mh = curl_multi_init();
$handles = array();
while($resultSet = mysql_fetch_array($SQL)){
//load the urls and send GET data
$ch = curl_init($resultSet['url'] . $fullcurl);
//Only load it for two seconds (Long enough to send the data)
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_multi_add_handle($mh, $ch);
$handles[] = $ch;
}
// Create a status variable so we know when exec is done.
$running = null;
//execute the handles
do {
// Call exec. This call is non-blocking, meaning it works in the background.
curl_multi_exec($mh,$running);
// Sleep while it's executing. You could do other work here, if you have any.
sleep(2);
// Keep going until it's done.
} while ($running > 0);
// For loop to remove (close) the regular handles.
foreach($handles as $ch)
{
// Remove the current array handle.
curl_multi_remove_handle($mh, $ch);
}
// Close the multi handle
curl_multi_close($mh);
`
最佳答案:
干得好:
$urls = array
(
0 => 'http://bing.com',
1 => 'http://yahoo.com/thisfiledoesntexistsoitwill404.php', // 404
2 => 'http://google.com',
);
$mh = curl_multi_init();
$handles = array();
foreach ($urls as $url)
{
$handles[$url] = curl_init($url);
curl_setopt($handles[$url], CURLOPT_TIMEOUT, 3);
curl_setopt($handles[$url], CURLOPT_AUTOREFERER, true);
curl_setopt($handles[$url], CURLOPT_FAILONERROR, true);
curl_setopt($handles[$url], CURLOPT_FOLLOWLOCATION, true);
curl_setopt($handles[$url], CURLOPT_RETURNTRANSFER, true);
curl_setopt($handles[$url], CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($handles[$url], CURLOPT_SSL_VERIFYPEER, false);
curl_multi_add_handle($mh, $handles[$url]);
}
$running = null;
do {
curl_multi_exec($mh, $running);
usleep(200000);
} while ($running > 0);
foreach ($handles as $key => $value)
{
$handles[$key] = false;
if (curl_errno($value) === 0)
{
$handles[$key] = curl_multi_getcontent($value);
}
curl_multi_remove_handle($mh, $value);
curl_close($value);
}
curl_multi_close($mh);
echo '<pre>';
print_r(array_map('htmlentities', $handles));
echo '</pre>';
返回:
Array
(
[http://bing.com] => <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html...
[http://yahoo.com/thisfiledoesntexistsoitwill404.php] =>
[http://google.com] => <!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>Google</title>...
)
正如您所看到的,所有URL都被提取,甚至是在404 Yahoo页面之后的Google.com.
内容总结
以上是互联网集市为您收集整理的php – curl_multi_exec会停止,如果一个网址是404,我该如何更改?全部内容,希望文章能够帮你解决php – curl_multi_exec会停止,如果一个网址是404,我该如何更改?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。