/** * Акшен для крона проверяет доступность сайтов */ public function checkAction() { $this->view->title = "Проверка сайтов"; $this->view->headTitle($this->view->title, 'PREPEND'); $mdlSite = new Application_Model_Sites(); $sites = $mdlSite->fetchAll(); $mdlSite->scanSites($sites, true); sleep(5); }
/** * Просмотр логов ответов от сервера по конкретному сайту */ public function checkAction() { // модель $mdlSite = new Application_Model_Sites(); // данные $id = $this->_getParam('id'); // действия $siteLogs = $mdlSite->checkSite($id); // вывод заголовков $this->view->title = "Логи сайта " . $siteLogs[0]['name']; $this->view->headTitle($this->view->title, 'PREPEND'); // вывод в шаблон $this->view->siteLogs = $siteLogs; }
/** * Редактирование параметров конкретного сайта */ public function editAction() { // вывод заголовков $this->view->title = "Изменить параметры сайта."; $this->view->headTitle($this->view->title, 'PREPEND'); // модели $site = new Application_Model_Sites(); $group = new Application_Model_SiteGroups(); // форма $form = new Application_Form_EditSite(); // костыль с валидатором $validator = new Zend_Validate_Hostname(); // данные $post = $this->_request->getPost(); $site_id = $this->_getParam('id'); $site_params = $site->getSite($site_id); // заполняем форму $form->populate($site_params); if (isset($post) && !empty($post['url'])) { $url = parse_url($post['url'], PHP_URL_HOST); if ($form->isValid($post) && $validator->isValid($url)) { $url = $post['url'] . '/'; if ($post['newgroup']) { $id_group = $group->addGroup($post['newgroup']); $site->editSite($site_id, $post['name'], $url, $id_group); } else { $site->editSite($site_id, $post['name'], $url, $post['group']); } $this->_redirect('/'); } else { // вывод в шаблон $this->view->message = 'Некорректная ссылка на сайт.'; $form->populate($post); } } // вывод в шаблон $this->view->form = $form; }
/** * Возвращает массив внутренних ссылок со страницы * * @param type $urlPage адресс страницы * @return array массив ссылок */ public function getLincPage($urlPage) { $urlPage = trim($urlPage); if (empty($urlPage)) { echo "Empty " . $urlPage; return array(); } try { // получаем код страницы $mdlSites = new Application_Model_Sites(); $page = $mdlSites->curlResponse($urlPage, TRUE); //curlResponse($url, $body=FALSE) $html = $page['body']; // file_get_contents($urlPage); // разбиваем по тегу ссылки $a = explode("<a", $html); // удаляем первый элемент он нам не нужен array_shift($a); // массив первичных результатов $res = array(); // проганяем по циклу foreach ($a as $value) { // отрезаем полную часть ссылки $parts = explode('>', $value); // извлекаем href foreach ($parts as $val[0]) { $match = array(); preg_match('/href="(.+)/', $val[0], $match); if ($match) { // обрезаем по кавычке ссылку $str = explode('"', $match[1]); // проверка на якоря и корень сайта $str[0] = trim($str[0]); $len = strlen($str[0]); if ($str[0] != '/' && $str[0] != '' && $str[0][0] != '#') { $res[] = $str[0]; } } } } // массив результатов $finalRes = array(); // парсим для проверки хоста $arrUrlPage = parse_url($urlPage); foreach ($res as $url) { $url = urldecode($url); $val = parse_url($url); if (isset($val['path']) && $this->getPathExp($val['path'])) { // если начинается с хоста if (!empty($val['host']) && $arrUrlPage['host'] === $val['host'] && !empty($val['scheme']) && $arrUrlPage['scheme'] === $val['scheme']) { if ($val['host'] == $arrUrlPage['host'] && $val['path'] != '') { $finalRes[] = $val['scheme'] . '://' . $val['host'] . $val['path']; } } else { // иначе от корня if (empty($val['host'])) { if (!empty($val['path']) && $val['path'][0] == '/') { $finalRes[] = $arrUrlPage['scheme'] . '://' . $arrUrlPage['host'] . $val['path']; } } } } } } catch (Zend_Exception $e) { $finalRes = array(); } $finalRes = array_unique($finalRes); return $finalRes; }