Ошибки относительно Web Crawler в PHP

Я пытаюсь создать простой веб-сканер, использующий PHP, который способен сканировать домены .edu, при условии, что исходные URL родительского.

Я использовал простой html dom для реализации сканера, в то время как некоторая основная логика реализована мной.

Я размещаю код ниже и постараюсь объяснить проблемы.

private function initiateChildCrawler($parent_Url_Html) {

    global $CFG;
    static $foundLink;
    static $parentID;
    static $urlToCrawl_InstanceOfChildren;

    $forEachCount = 0;
    foreach($parent_Url_Html->getHTML()->find('a') as $foundLink) 
    {
        $forEachCount++;
        if($forEachCount<500) {
        $foundLink->href = url_to_absolute($parent_Url_Html->getURL(), $foundLink->href);

        if($this->validateEduDomain($foundLink->href)) 
        {
            //Implement else condition later on
            $parentID = $this->loadSaveInstance->parentExists_In_URL_DB_CRAWL($this->returnParentDomain($foundLink->href));
            if($parentID != FALSE) 
            {
                if($this->loadSaveInstance->checkUrlDuplication_In_URL_DB_CRAWL($foundLink->href) == FALSE)
                {
                    $urlToCrawl_InstanceOfChildren = new urlToCrawl($foundLink->href);
                    if($urlToCrawl_InstanceOfChildren->getSimpleDomSource($CFG->finalContext)!= FALSE)
                    {
                        $this->loadSaveInstance->url_db_html($urlToCrawl_InstanceOfChildren->getURL(), $urlToCrawl_InstanceOfChildren->getHTML());
                        $this->loadSaveInstance->saveCrawled_To_URL_DB_CRAWL(NULL, $foundLink->href, "crawled", $parentID);

                        /*if($recursiveCount<1)
                        {
                            $this->initiateChildCrawler($urlToCrawl_InstanceOfChildren);
                        }*/
                    }
                }
            }
        }
        }
    }   
}

Теперь вы можете видеть, что initiateChildCrawler вызывается функцией initiateParentCrawler, которая передает родительскую ссылку на дочерний сканер. Пример родительской ссылки: www.berkeley.edu, для которой сканер найдет все ссылки на своей главной странице и вернет все html-содержимое. Это происходит до тех пор, пока не будут исчерпаны URL-адреса семян.

например: 1-harvard.edu - >>>>> Найдет все ссылки и вернет их HTML-контент (вызвав childCrawler). Переходит к следующему родителю в parentCrawler. 2-berkeley.edu - >>>>> Найдет все ссылки и вернет их html-контент (вызвав childCrawler).

Другие функции говорят сами за себя.

Теперь проблема: после того, как childCrawler завершает цикл foreach для каждой ссылки, функция не может правильно завершиться. Если я запускаю сценарий из CLI, CLI падает. При запуске скрипта в браузере скрипт завершается.

Но если я установлю предел сканирования дочерних ссылок равным 10 или менее (изменяя переменную $ forEachCount), сканер начнет работать нормально.

Пожалуйста, помогите мне в этом отношении.

Сообщение от CLI:

Подпись проблемы: Проблема Имя события: APPCRASH Имя приложения: php-cgi.exe Версия приложения: 5.3.8.0 Временная метка приложения: 4e537939 Имя модуля сбоя: php5ts.dll Версия модуля сбоя: 5.3.8.0 Временная метка модуля сбоя: 4e537a04 Код исключения: c0000005 Исключение Смещение: 0000c793 Версия ОС: 6.1.7601.2.1.0.256.48 Идентификатор локали: 1033 Дополнительная информация 1: 0a9e Дополнительная информация 2: 0a9e372d3b4ad19135b953a78882e789 Дополнительная информация 3: 0a9e Дополнительная информация 4: 0a9e372d3b4ad19135b9578a78882

Ответы на вопрос(1)

Ваш ответ на вопрос