首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在递归函数的中间输出回波消息

在递归函数的中间输出回波消息
EN

Stack Overflow用户
提问于 2018-06-29 08:06:33
回答 1查看 93关注 0票数 0

我在试着建造一个简单的爬行器。爬行器运行良好,但是,我想在递归函数中输出一些消息,以了解$crawling数组中需要爬行的页面数量以及当前正在爬行的页面。

下面是相关代码。函数中有两个echo,但是在脚本完成之前没有输出任何内容。是否可以在递归函数中输出消息?

代码语言:javascript
复制
$alreadyCrawled = array();
$crawling = array();

function followLinks($url) {
    global $alreadyCrawled;
    global $crawling;

    echo "Now crawling: $url";

    $parser = new DomDocumentParser($url);
    $linkList = $parser->getLinks();

    // Get the links
    for($i = 0; $linkList->length > $i; $i++) {
        $href = $linkList->item($i)->getAttribute("href");

        // Convert relative links to absolute links
        if(strpos($href, "#") !== false) {
            continue;
        } else if(substr($href, 0, 11) === "javascript:") {
            continue;
        } else if(substr($href, 0, 6) === "mailto") {
            continue;
        }

        $href = createLink($href, $url);

        // Crawl page
        if(!in_array($href, $alreadyCrawled)) {
            $alreadyCrawled[] = $href;
            $crawling[] = $href;

            getDetails($href);
        }

    }

    array_shift($crawling); // Remove page just crawled

    echo "Finished crawling: $url, Pages left to crawl: " . count($crawling);    

    // Crawl until array is empty
    foreach ($crawling as $site) {
        followLinks($site);
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-29 08:45:24

在查看了nandal的答案和CBroe的链接到一个可能的重复之后,我最终得到了下面的函数。每次回音后调用它就行了。

代码语言:javascript
复制
function flush_buffers(){
    ob_end_flush();
    ob_flush();
    flush();
    ob_start();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51097114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档