作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 cURL 函数,可以抓取数组中指定的所有网页。该数组称为 $to_be_spidered,我的函数像这样执行:
$to_be_spidered = array('http://google.com', 'http://mysterysite.com', 'http://yahoo.com');
for ($i = 0; $i != count($to_be_spidered); $i++) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 0); // set cURL timeout
$html= curl_exec($ch);
// error handling
if (!$html) {
echo "<br />cURL error number:" .curl_errno($ch);
echo "<br />cURL error:" . curl_error($ch);
exit;
}
// etc. etc...
}
现在的问题是,如果网页返回 404 之类的错误,脚本就会被终止。例如,如果未找到 mymysite.com,则脚本不会尝试抓取 yahoo.com。它只是退出该链接以及之后的所有链接。
我希望它停止尝试抓取错误链接并转到队列中的下一个链接。我尝试将“退出”更改为“继续”,但没有成功。它仍然停止。我做错了什么还是这特定于使用 cURL?
最佳答案
您应该按照指示将exit
更改为continue
。
您收到任何错误吗?是否启用错误报告? fatal error 将停止执行。
将其放在脚本的顶部
ini_set('display_errors', 'On');
error_reporting(E_ALL);
另外,您在哪里使用 $to_be_spidered
中的 URL?另一件事(也相关),使用 foreach
foreach ($to_be_spidered as $target_url) {
关于php - 胆怯的 PHP 脚本在遇到错误时就退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4870138/
我是一名优秀的程序员,十分优秀!