рекурсивный или простой цикл php - PullRequest
0 голосов
/ 18 января 2012

У меня возникли проблемы с пониманием, как решить этот цикл:

Я разрабатываю для себя небольшой скребок и пытаюсь выяснить, как выполнить цикл в пределах 2 методов, пока все ссылки не будут получены с веб-сайта.

Я уже получаю ссылки с первой страницы, но проблема в том, что я не могу сделать цикл для проверки уже извлеченных новых ссылок:

Вот мой код:

    $scrap->fetchlinks($url);//I scrap the links from the first page from a website

    //for each one found I insert the url in the DB with status = "n"
    foreach ($scrap->results as $result) {
        if ($result) {
            echo "$result \n";
            $crawler->insertUrl($result);

            //I select all the links with status = "n" to perform a scrap the stored links
            $urlStatusNList = $crawler->selectUrlByStatus("n");

            while (sizeof($urlStatusNList > 1)){
                foreach($urlStatusNList as $sl){
                $scrap->fetchlinks($sl->url);  // I suppose it would retrieve all the new sublinks
                $crawler->insertUrl($sl->url); // insert the sublinks in the db
                $crawler->updateUrlByIdStatus($sl->id, "s"); //update the link scraped with status = "s", so I will not check these links again

                //here I would like to return the loop for each new link in the db with status='n' until the system can not retrieve more links and stops with the script execution
                }
            }   
        }
    }

Любая помощь очень приветствуется. Заранее спасибо!

1 Ответ

1 голос
/ 18 января 2012

В псевдокоде вы ищете что-то вроде этого

do
{
    grab new links and add them to database

} while( select all not yet extracted from database > 0 )

Будет продолжаться и продолжаться без рекурсии ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...