getSites($dbNiimko); $specializations = ContingentManager::getInstance()->getSpecializations($dbNiimko); // print_r($sites); // print_r($specializations); $status = null; $succes = 0; $failed = array(); for ($i = 0; $i < 100; $i++) { try { $client = new Client([ RequestOptions::ALLOW_REDIRECTS => [ 'max' => 10, 'strict' => true, 'referer' => true, 'track_redirects' => true, ] ]); $baseURL = $sites[$i]['site']; $url = ContingentManager::getInstance()->buildURL($baseURL); print(($i+1).". Current url: $url\n"); $response = $client->get($url, ['timeout' => 300]); $status = $response->getStatusCode(); $html = $response->getBody()->getContents(); $parser = new ContingentParser($html, '//tr[@itemprop="eduChislen"]//'); $contingent = $parser->getDataTable(); // Добавляем поле spec_id по spec_code ContingentManager::getInstance()->addSpecId($contingent, $specializations); // Добавляем поле org_id ContingentManager::getInstance()->addOrgId($contingent, $sites[$i]['org_id']); print_r($contingent); } catch (ClientException $e) { $response = $e->getCode(); } catch (RequestException $e) { $response = $e->getCode(); } catch (ConnectException $e) { $response = $e->getCode(); } catch (ServerException $e) { $response = $e->getCode(); } finally { if ($status == 200 && !empty($contingent)) { $status = 0; print("Succes: ".++$succes."\n"); // TODO - здесь заносим в базу } else { // Сайты, которые распарсить не удолось $failed[] = $sites[$i]; } } } $yaml = Yaml::dump($failed); file_put_contents(__DIR__ . '/../failed.yaml', $yaml); // Чтобы не дублировались в базе // $dbOpendata->insert('sveden_education_contingent', $data); // $dbOpendata->update('sveden_education_contingent', $specializations); // $data = $dbOpendata->select('sveden_education_contingent');