Разработка web приложения для проверки URL (структура)

Владимир | | CodeIgniter, PHP, Web разработка.

Логотип
В прошлый раз я начал рассказывать о разработке небольшого web приложения, выполняющего проверку доступности сайтов. Мы уже определились с требованиями к этому приложению (составили перечень функций) и библиотеками, которые будем использовать.

Сегодня мы рассмотрим структуру приложения и базы данных, а также установим и настроим фреймворк.

Итак, структура приложения.

Исходя из перечня функций, нам хватит двух страниц.

Главной (mainpage) – здесь будет размещена таблица с краткой информацией о результатах проверок, ссылки «Удалить» для каждого URL, форма добавления нового URL и кнопка «Пинговать все!», запускающая одновременную проверку всех URL.

Страницы со сведениями по выбранному URL (urldetails). Здесь будет таблица с подробной информацией о результатах проверок (время/дата, результат, размер полученной страницы, время и скорость загрузки). Кроме того, мы добавим ссылки для удаления любого из результатов и кнопу «Пинг».

Посмотреть как выглядят эти страницы можно на скриншотах.

Главная - Simple URL Checker (миниатюра)

Рис.1. Главная.

Подробные сведения об URL - Simple URL Checker (миниатюра)

Рис.2. Подробные сведения о выбранном URL.

А порядок взаимодействия посетителя с приложением изображен на диаграмме.

Взаимодействие посетителя с приложением

Рис.3. Диаграмма деятельности.

Как видите, сначала пользователь попадает на главную страницу, где ему доступны следующие функции:

ping() – запускает проверку всех URL;
addurl() – добавляет новый URL;
removeurl() – удаляет URL (и все относящиеся к нему результаты проверок);
urldetails() – переход на страницу с подробной информацией о выбранном URL.

На странице urldetails:

removeresult(...) – удаление выбранного результата;
ping(...) – проверка данного URL;
index() – переход на главную.

Имена всех перечисленных функций совпадают с названиями методов контроллера (подробно мы их рассмотрим позже), который в нашем приложении будет всего один. Т.е. на данный момент мы определили практически все взаимосвязи между компонентами приложения.

Переходим к созданию базы данных.

Нам будет достаточно двух таблиц. Их структура показана на рис.4.

Структура базы данных

Рис.4. Структура базы данных.

Таблица urls содержит всего два поля: id – первичный ключ, url – адрес, который нужно проверять.

В таблице results мы будем хранить результаты всех проверок. Названия ее полей, в общем-то, говорят сами за себя:

id – первичный ключ;
urlId – внешний ключ (foreign key), это значение выбирается из таблицы urls (поле id);
checktime – дата и время проверки;
result – результат (может принимать два значения «1» — «ОК» или «0» — «ERR»);
responsetime – время получения ответа;
responselength – размер ответа;
responsespeed – скорость.

Как видите, используя внешний ключ (urlId) можно однозначно связать адреса из таблицы urls с результатами их проверок в таблице results.

Если не хотите заниматься созданием базы и таблиц вручную, скачайте файл (simpleurl.sql). В нем находятся все необходимые sql команды. После этого его можно импортировать с помощью phpMyAdmin.

Примечание. Если вы хотите изменить название базы данных, просто замените в файле simpleurl.sql название simpleurldb на ваше.

Структура приложения и базы данных ясна, теперь можно переходить к установке и настройке фреймворка.

Как я и говорил, использовать мы будем CodeIgniter. На его установке я подробно останавливаться не буду, если интересно, посмотрите статью «Установка и настройка CodeIgniter».

Здесь я остановлюсь только на настройках данного приложения.

Все файлы настроек находятся в папке application/config/.
В файле autoload.php мы подключаем библиотеку для работы с БД и хелпер для работы с URL.

$autoload['libraries'] = array('database');
$autoload['helper'] = array('url');

config.php – здесь нужно только установить адрес сайта:

$config['base_url'] = "адрес_приложения_на_вашем_сервере"; //например, http://localhost/urlchecker/

routes.php – указываем имя контроллера, который будет использоваться по-умолчанию.

$route['default_controller'] = "main";

database.php – здесь нужно указать параметры подключения к БД.
Я сделал так:

$active_group = "default";
$active_record = FALSE;

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "db_user_name";
$db['default']['password'] = "db_user_pass";
$db['default']['database'] = "simpleurldb";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

Естественно, имя пользователя и пароль нужно указать свои.

Как видите, все это обычные настройки фреймвора.

В следующий раз мы подробнее рассмотрим работу с базой данных, т.е. напишем модели.

До встречи!

P.S. Ссылки на все статьи и примеры цикла я публикую здесь.

  • А в чем рисовалась структура базы данных (рис.4), если не секрет?

    • Никаких секретов, MySQL Workbench 5.0
      Правда, в бесплатной версии нет экспорта в виде рисунка, поэтому я просто сделал скриншот 🙂 . (если модель большая и не помещается на экране придется лепить из частей).

  • А в чем рисовалась структура базы данных (рис.4), если не секрет?

    • Никаких секретов, MySQL Workbench 5.0
      Правда, в бесплатной версии нет экспорта в виде рисунка, поэтому я просто сделал скриншот 🙂 . (если модель большая и не помещается на экране придется лепить из частей).

  • Отличный блог, коллеги. Успешного развития!

  • Отличный блог, коллеги. Успешного развития!

  • Scouctcen

    Интересный блог- ещё зайду

  • Scouctcen

    Интересный блог- ещё зайду