【发布时间】:2011-06-27 12:53:09
【问题描述】:
我编写了一个站点爬虫来获取链接和图像以创建站点地图,但它在运行时被杀死了!所以这不是我的整个班级
class pageCrawler {
.......
private $links = array();
public function __construct ( $url ) {
ignore_user_abort ( true );
set_time_limit ( 0 );
register_shutdown_function ( array ( $this, 'callRegisteredShutdown' ) );
$this->host = $urlParts [ 'host' ];
$this->crawlingUrl ( $url );
$this->doCrawlLinks ();
}
$this->crawlingUrl ( $url ):
在开始时设置此方法的主地址(例如http://www.mysite.com)getUrl():通过fsockopen连接到url然后获取url内容findLinks():返回a href和img src然后存储返回链接在$this->links[] 然后我回显一些内容以刷新输出并在之后插入以下代码:
echo str_pad ( " ", 5000 );
flush ();
$this->doCrawlLinks():
检查$this->links 并执行我在顶部为$this->links 的第一个元素描述的相同过程
然后移动第一个元素
再次 doCrawlLinks() 运行并获取第一个元素的 url 内容然后移动 $this->links 的第一个元素直到 $this->links 变空
这是我班的大势所趋,它是工作但突然它突然崩溃了。我将set_time_limit(0) 设置为永远执行,但我的过程未完成,因为我的喊叫功能未执行!我很困惑我的问题在哪里
【问题讨论】:
-
您的错误报告功能是否开启?错误报告(E_ALL);以防它因为脚本的其余部分出错而超时?
-
"通过 fsockopen 连接到 url" - OMG!为什么??????
-
@symcbean : 我用过 CURL 但我又遇到了这个问题
标签: php web-crawler