/** * @param ActiveRecord $category * * @return int */ private function parseLinkData(ActiveRecord $category) { $offset = 0; // начало отсчета if ($category instanceof LetualCategory) { $linkEntity = new LetualLink(); } elseif ($category instanceof RivegaucheCategory) { $linkEntity = new RivegaucheLink(); } elseif ($category instanceof IledebeauteCategory) { $linkEntity = new IledebeauteLink(); } elseif ($category instanceof ElizeCategory) { $linkEntity = new ElizeLink(); } else { return 0; } do { $links = $category->getLinks($offset, 5); if (!empty($links)) { foreach ($links as $link) { $service = new ParserService(); if ($linkEntity instanceof LetualLink) { $urls = $service->collectLLinkData($link->link); } elseif ($linkEntity instanceof RivegaucheLink) { $urls = $service->collectRLinkData($link->link); } elseif ($linkEntity instanceof IledebeauteLink) { $urls = $service->collectILinkData($link->link); } elseif ($linkEntity instanceof ElizeLink) { $urls = $service->collectELinkData($link->link); } else { $urls = []; } foreach ($urls as $key => $url) { $attributes = ['group' => $link->group, 'category' => $link->category, 'sub_category' => $link->sub_category]; $linkModel = $linkEntity::getByLink($url); $linkModel->setAttributes($attributes); $linkModel->save(); } } $z = 1; $offset += 5; unset($links); unset($client); } else { $z = 0; } } while ($z > 0); return 0; }
/** * Метод проверяет собранные артикула */ public function actionErrorProcessing() { $offset = 0; /** @var $entity ErrorProcessing */ $entity = new ErrorProcessing(); do { $links = $entity->getLinks($offset, 20); if (!empty($links)) { foreach ($links as $link) { if (!$link->processing) { $crawler = $this->getData($link->link); if (!$crawler) { continue; } $service = new ParserService(); $result = $service->checkProduct($crawler, ParserService::RIV); if (!empty($result)) { $errorProcess = ErrorProcessing::findOne(['link' => $link->link]); $errorProcess->comment = $result; $errorProcess->processing = 1; $errorProcess->save(); } } //print_r($link->link); unset($node); unset($service); unset($result); } $z = 1; $offset += 20; unset($links); unset($client); } else { $z = 0; } } while ($z > 0); return 0; }