Разработка информационного web-сайта

Описание основных используемых технологий и языков программирования. Язык программирования JavaScript. Таблица стилей CSS. Общая схема работы web-приложения. API система "1С-Битрикс: Управление сайтом". Формирование требований к сценариям работы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 30.04.2014
Размер файла 186,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Данная функция принимает в качестве первого параметра путь к странице web-приложения, которая была бы загружена по действию пользователя, если бы не использовалась технология AJAX. Предполагается, что в данном пути указаны все переменные и их значения, которые будут определять состояние страницы web-приложения после выполнения запроса. exclude_array - дополнительный параметр, содержащий массив параметров, которые необходимо исключить из списка переменных, указанных в параметре url, может быть пустым. Функция возвращает массив из двух элементов, первый из которых с индексом 0 содержит сформированную строку запроса к компьютеру web-приложения с помощью технологии AJAX; второй, с индексом 1, содержит строку состояния, которая будет помещена в адресную строку браузера.

Array([0] => «строка_запроса_AJAX», [1] => «строка_состояния_страницы»).

Таким образом, эта функция может быть вызвана до момента выполнения AJAX-запроса, строка запроса может быть использована в момент запроса, строка состояния - после выполнения запроса для помещения в адресную строку браузера. Ниже приведен типичный пример:

 // вызов функции

var paths = ajax_state_string («http://www.metagames.ru/index.php? filter=up&datei=10», new Array());

/*

далее идет ajax-запрос с использованием технологии AJAX к странице с адресом paths[0]

*/

 // сохраняем строку состояния в адресной строке браузера

window.location += «#»+paths[1];

Следующим шагом является написание функции для восстановления из адресной строки браузера состояния загруженной страницы:

function restore_hash_part (path, result_block, ar_next, ajax_status_id, filterupped){}

Функция принимает следующие параметры:

- path - путь, указанный в адресной строке браузера;

- result_block - ID элемента страницы, в который должен быть загружен результат;

- ar_next - массив, содержит в качестве первого элемента (индекс - 0) имя переменной, в качестве второго элемента (индекс 1) значение переменной, указывающей на то, что имеет смысл восстанавливать состояние (это не простой, а ajax-запрос);

- ajax_status_id - ID элемента страницы для визуальной анимации процесса восстановления состояния;

- filterupped - логическая переменная. Если true, процесс восстановления выполнен не будет;

Эта функция может быть вызвана сразу после загрузки страницы. Типичный пример использования:

 // момент загрузки страницы

window.onLoad = function()

{

restore_hash_part (window.location, «result_block_id», new Array («filter», «up»), «ajax_status_id», false));

}

Две данные функции в совокупности образуют интерфейс сохранения состояния страниц разработанного web-приложения и используются на различных страницах web-приложения для сохранения истории AJAX-запросов. Использование данных функций решает проблему невозможности использования кнопок «назад» и «вперед» в панели web-браузера, сохранения адресов страниц с данными, полученными при помощи AJAX-запросов, в закладках и при перезагрузке страницы.

В предыдущей главе при создании структуры web-приложения не было учтено требование «оценка игры должна считаться на основе оценок, указанных в обзорах к игре». Данное требование могло бы быть реализовано в логике работы компонентов, выводящих информацию по играм. Но каждый раз подсчитывать оценку, постоянно обращаясь к элементам информационного блока «Обзоры», слишком ресурсоёмко с точки зрения использования ресурсов компьютера и скорости работы страниц web-приложения. Например, один из списков игр содержит 40 записей, каждая из которых соотносится в среднем с пятью обзорами. Итого - нужно просмотреть в среднем 200 обзоров, что может заметно увеличить скорость загрузки страницы. Наиболее приемлемым средством реализации требования была бы возможность автоматического расчёта и установки значения оценки игры при создании, изменении или удалении обзора, т.е., выражаясь в терминах системы, установки значения свойства с кодом MAIN_METAMARK элемента информационного блока «Игры» при изменении, удалении или добавлении элемента информационного блока «Обзоры», в котором в значение свойства с кодом GAME_ID совпадает с идентификатором элемента информационного блока «Игры». Но вносить изменения в сценарии работы панели управления системы не рекомендуется. Таким образом, актуальным становится вопрос, как можно перехватить событие добавления элемента информационного блока.

Для решения такого типа проблем в системе предусмотрена технология событий и обработчиков событий панели управления. При реализации указанного в предыдущем абзаце требования необходимо использовать следующие типы событий:

- Событие добавления элемента информационного блока. Нас интересует событие, наступающее при успешном добавлении элемента. В системе данное событие имеет код «OnAfterIblockElementAdd»;

- Событие изменения элемента информационного блока. Код - «OnAfterIblockElementUpdate»;

- Событие удаления элемента информационного блока. Код - «OnBeforeIblockElementDelete»;

Имея возможность перехвата и обработки указанных выше событий, можно выстроить алгоритм реализации требования.

- Получить данные элемента информационного блока, участвующего в событии;

- Определить информационный блок, которому принадлежит элемент;

- Если информационный блок не соответствует информационному блоку «Обзоры», прекратить обработку события;

- Определить изменяемый элемент информационного блока «Игры» (свойство с кодом GAME_ID);

- Провести расчёт и присвоить полученный результат свойству с кодом MAIN_METAMARK элемента информационного блока «Игры».

Чтобы зарегистрировать обработчик, необходимо воспользоваться встроенной функцией API системы:

void AddEventHandler (string from_module_id, string event_id, mixed callback, int sort = 100, mixed full_path = false)

from_module_id - идентификатор модуля, который будет инициировать событие;

event_id - идентификатор события;

callback - название функции обработчика;

sort - очередность (порядок), в котором выполняется данный обработчик;

full_path - полный путь к файлу для подключения при возникновении события перед вызовом callback;

В нашем случае, регистрация обработчиков событий будет выглядеть следующим образом:

AddEventHandler («iblock», «OnAfterIblockElementAdd», «add_review_handler»);

AddEventHandler («iblock», «OnAfterIblockElementUpdate», «add_review_handler»);

AddEventHandler («iblock», «OnBeforeIblockElementDelete», «delete_review_handler»);

Для реализации алгоритма, указанного выше, написано две функции:

void delete_review_handler (int ID)

Функция - обработчик события удаления элемента информационного блока с идентификатором ID.

void add_review_handler (array &arFields)

Функция - обработчик события добавления элемента информационного блока. $arFields - передаваемый по ссылке массив с данными добавленного элемента. Эта же функция обрабатывает и событие изменения элемента.

Таким образом, требование по автоматическому подсчету оценки игры по оценкам обзоров может быть реализовано без изменения сценариев панели управления и без нагрузки на сервер web-приложения в момент загрузки страниц.

7. Резервное копирование данных web-приложения. Система управления версиями

7.1 Общие сведения

Современные web-приложения содержат большое количество данных, на сбор, обработку и размещение которых уходит большое количество времени и денежных ресурсов. Поэтому безвозвратная утеря данных (прежде всего, хранящихся в базе данных) web-приложений может привести к фатальным последствиям вплоть до полной потери актуальности web-приложения и его так называемой «смерти», т.е. потери интереса пользователя к web-приложению.

Помимо данных, хранящихся в БД, опасности некорректного изменения подвержены и файлы, хранящиеся в файловой системе компьютера web-приложения и обеспечивающие его работу. В первую очередь, существует опасность взлома и изменения файлов, содержащих сценарии на языках PHP, JavaScript, которые обеспечивают работу системы и web-приложения. Помимо несанкционированного доступа существует опасность изменения файлов сценариев и посредством санкционированного доступа, например, изменения текстов сценариев разработчиками, занимающимися поддержкой и обслуживанием web-приложения, которые могут быть некорректными и дестабилизировать работу web-приложения. Поэтому необходимо обезопасить данные и файлы web-приложения, обеспечив их резервное копирование.

7.2 Реализация резервного копирования

Для того чтобы защитить данные, хранящиеся в базе, следует воспользоваться утилитами, предоставляемыми СУБД. В нашем случае это утилита mysqldump [5], предоставляемая СУБД MySQL. Эта утилита должна быть запущена из командной строки операционной системы, которая отвечает за работу web-приложения. В нашем случае это операционная система GNU/Linux, т.е. для запуска утилиты можно воспользоваться командной оболочкой Bourne Shell [3]. В процессе реализации резервного копирования был написан сценарий на языке Bourne Shell, который обеспечивает резервное копирование данных и сохраняет файл копии в файловой структуре web-приложения.

DUMP_FILE_NAME=`date +%Y % m % d % H % M % S`

mysqldump - u [логин_пользователя] - p[пароль] - f [имя_базы_данных] > /tmp/$DUMP_FILE_NAME.sql

if [$? - eq 0]

then

gzip - c /tmp/$DUMP_FILE_NAME.sql > /home/bitrix/www/bitrix/backup/$DUMP_FILE_NAME.auto.sql.gz

chmod 644 /home/bitrix/www/bitrix/backup/$DUMP_FILE_NAME.auto.sql.gz

chown bitrix:bitrix /home/bitrix/www/bitrix/backup/$DUMP_FILE_NAME.auto.sql.gz

fi

rm - f /tmp/$DUMP_FILE_NAME.sql

В данном сценарии происходит вызов утилиты mysqldump с указанием имени БД, логина и пароля пользователя для доступа к БД. Далее происходит сохранение файла в локальной директории компьютера с последующим его сжатием с помощью утилиты gzip и назначения прав доступа и имени пользователя ОС для доступа к этим файлам на скачивание посредством панели управления системы «1С - Битрикс: Управление сайтом». Локальная копия файла в конце удаляется. Теперь, присвоив данному сценарию имя mysql_dump.sh, можно осуществить резервное копирование данных посредством вызова данного сценария:

[root@v8733 sh_scripts]#./mysql_dump.sh

Для организации резервного копирования файловой структуры web-приложения был написан сценарий file_dump.sh.

DUMP_FILE_NAME=`date +%Y % m % d % H % M % S`

tar - exclude=bitrix/backup - czf /home/bitrix/www/bitrix/backup/$DUMP_FILE_NAME.auto.file.tar.gz /home/bitrix/www

if [$? - eq 0]

then

chown bitrix:bitrix /home/bitrix/www/bitrix/backup/$DUMP_FILE_NAME.auto.file.tar.gz

fi

В данном сценарии происходит архивация данных с помощью утилиты tar с последующим сохранением архива в файловой структуре web-приложения. Из архива логично исключается сам раздел, который будет хранить резервные копии файлов и архивов. Аналогично процесс резервного копирования можно выполнить, запустив на выполнение данный сценарий:

[root@v8733 sh_scripts]#./file_dump.sh

Данные сценарии решают задачу резервного копирования данных, хранящихся в базе данных и в файловой структуре web-приложения, но для полной автоматизации данного процесса необходимо сделать так, чтобы данные копировались автоматически, т.е. в определенное время с определенной периодичностью. Для того чтобы реализовать данное требование, необходимо воспользоваться демоном - планировщиком задач cron. Для того чтобы поставить данному планировщику задание, необходимо создать в файловой структуре компьютера web-приложения файл задач. В нашем случае данный файл будет иметь имя «cron.tasks». Для того, чтобы поставить задачу осуществления резервного копирования данных и файлов web-приложения на определенное время, необходимо внести в файл cron.tasks следующий текст:

01 3 * * * /home/bitrix/sh_scripts/mysql_dump.sh 1>/dev/null 2>/home/bitrix/logs/mysql_dump.log

10 3 * * 2 /home/bitrix/sh_scripts/file_dump.sh 1>/dev/null 2>/home/bitrix/logs/file_dump.log

Теперь, чтобы окончательно зафиксировать задачи планировщика, следует запустить утилиту crontab:

[root@v8733 sh_scripts]# crontab cron.tasks

После её выполнения которой задачи будут зафиксированы.

После получения нескольких файлов резервных копий была произведена попытка развертывания архива файловой системы и дампа базы данных на локальном компьютере. Процесс восстановления прошел успешно и локальная копия web-приложения до сих пор используется для поддержки web-приложения.

7.3 Система управления версиями

Система управления версиями используется в процессе разработки и обслуживания web-приложений. Основной задачей системы управления версиями является обеспечение совместного редактирования и использования информации. Использование данной системы обеспечивает возможность командной разработки web-приложения и централизованного хранения данных в едином хранилище. Хранилище может быть расположено на удаленном сервере и к нему должна быть обеспечена возможность удаленного доступа нескольких клиентов. Система управления версиями решает одну из важнейших проблем совместной разработки и изменения информации - проблему разделения файлов.

Для обеспечения возможности командной разработки мной была использована централизованная система управления версиями Subversion. На данный момент Subversion, которую еще называют SVN по имени входящей в дистрибутив системы клиентской программы, является ведущей системой управления версиями, данную систему используют ведущие компании по разработке web-приложений. В системе Subversion реализована модель «Копирование - Изменение - Слияние» [4], позволяющая разработчикам независимо друг от друга разрабатывать сценарии web-приложения, объединяя результаты своих трудов в едином централизованном хранилище, чаще всего расположенном на компьютере, на котором находится web-приложение.

Хранилище содержит информацию в форме дерева файлов - типичном представлении файлов и каталогов. Любое количество клиентов подключается к хранилищу и читает или записывает эти файлы. Записывая данные, клиент делает информацию доступной для остальных. Читая данные, клиент получает информацию от других. Хранилище в системе Subversion принято называть репозиторием.

С точки зрения пользователя хранилище Subversion представляет собой «двумерную» файловую систему. Объекты в хранилище (файлы и директории) идентифицируются двумя «координатами»: именем и номером ревизии. Другими словами, хранилище представляет собой массив мгновенных снимков (ревизий) дерева файлов и директорий, индексируемый номером ревизии. Каждый такой снимок - обычная (одномерная) файловая система. Каждый клиент (в нашем случае - разработчик web-приложения) может сделать такой снимок (checkout) и записать его на диск своего локального компьютера. Такой снимок называется рабочей копией. Рабочая копия - это созданная клиентской программой Subversion локальная копия части данных из хранилища, содержащая помимо собственно данных некоторую служебную информацию (скрытые директории с именем.svn). Далее клиент может осуществлять изменения файлов рабочей копии на своем локальном компьютере. После изменения файлов клиентом он может зафиксировать (commit) данные изменения в самом репозитории. Еще одним важным действием, которое может выполнить клиент, является слияние (update) последних изменений файлов репозитория с рабочей копией. Данное действие позволяет обеспечить наличие у клиента самой последней версии файлов репозитория. Можно также обновить рабочую копию до определенной версии, указав её номер. Перед непосредственным использованием системы управления версий в web-приложении следует упомянуть еще одно действие - откат (revert) изменений. Данное действие позволяет отменить изменения, сделанные в рабочей копии клиента и вернуть файл в состояние, которым он обладает в репозитории.

В состав дистрибутива GNU/Linux, установленного на компьютере web-приложения, Subversion входит и установлен. Для настройки системы Subversion, таким образом, необходимо выполнить следующую последовательность действий:

1. Создание и настройка репозитория;

2. Версионирование файлов и папок web-приложения;

3. Создание рабочей копии на локальном компьютере;

Создание и настройка репозитория.

Для того чтобы создать и настроить репозиторий, необходимо в командной строке операционной системы выполнить команду svnadmin create <имя_репозитория>. В нашем случае репозиторий будет носить имя metagames. Соответственно, команда будет иметь вид:

[root@v8733 ~]# svnadmin create /home/svn/metagames

Все хранилища расположены в директории /home/svn.

Далее следует настроить доступ к репозиторию, указав логин и пароль доступа к репозиторию, название репозитория и права доступа разных групп пользователей к репозиторию. Для этого нужно править файл svnserve.conf, находящийся в файле /home/svn/metagames:

anon-access=none

auth-access=write

password-db=passwd

realm=metagames

В данном файле мы запретили доступ к репозиторию всем пользователям, кроме авторизованных, указали имя репозитория (metagames) и указали имя файла, содержащего логин и пароль доступа к репозиторию (passwd).

После внесения изменений необходимо перезапустить процесс системы Subversion, выполнив последовательно команды killall и svnserve.

[bitrix@v8733 ~]# killall svnserve;

[bitrix@v8733 ~]# svnserve - d - r /home/svn

Важно отметить, что процесс web-сервера Apache (httpd) на компьютере web-приложения запущен от имени пользователя с именем bitrix. Соответственно, владельцем файлов web-приложения является указанный выше пользователь. Поэтому запуск процесса системы Subversion svnserve следует выполнить от имени пользователя с именем bitrix, чтобы обеспечить сохранность настроек доступа и владельца изменяемых файлов.

Стандартная структура файлов верхнего уровня репозитория содержит следующую структуру:

branches

trunk

tags

Для того чтобы зафиксировать такую файловую структуру в репозитории, необходимо создать какую-нибудь папку в файловой структуре компьютера (например, init) web-приложения, выполнить команду checkout

svn checkout svn://metagames.ru/metagames/ init

создать в данной папке указанные выше подпапки, выполнить для каждой из созданных подпапок команду add

svn add init/branches

….

и выполнить команду commit

svn commit init - m «Start doings».

После этого в репозитории будет создана и версионирована требуемая структура.

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

Создание рабочей копии на локальном компьютере.

Теперь, когда репозиторий на компьютере web-приложения создан, можно выполнить снимок репозитория и создать рабочую копию репозитория на удаленном компьютере. Для этого можно воспользоваться программой - клиентом системы Subversion Tortoise SVN. Данная программа позволяет работать с репозиторием, вносить изменения в файлы и фиксировать их. В данной программе в графическом режиме доступны команды update, add, commit и т.д. В процессе разработки web-приложения на локальном копьютере была развернута копия web-приложения, затем для корневой папки с помощью команды Tortoise SVN checkout было выполнено версионирование файлов локального компьютера. Дальнейшие изменения файлов web-приложения проходили и проходят по следующему сценарию:

1. Изменение файла, например, /home/bitrix/index.php на локальном компьютере;

2. Выполнение фиксации изменений данного файла в репозитории с помощью команды Tortoise SVN commit;

3. Выполнение команды svn update для файла самого web-приложения в командной строке операционной системы, управляющей web-приложением на удаленном компьютере;

Данная технология управления версиями была использована при разработке web-приложения и используется в данный момент для поддержания работы web-приложения и обеспечения возможности работы над web-приложением нескольких разработчиков. Также стоит отметить важное для разработки свойство сохранения истории разработки в виде версий, которое позволяет следить за процессом разработки и делать откаты изменений в сценариях web-приложения, если разработчиками допущены какие-либо ошибки. Плюсом является то, что для доступа к файловой структуре web-приложения более не требуется доступов по протоколам FTP и HTTP, весь процесс разработки проходит на локальном компьютере, что позволяет максимально отладить сценарии перед обновлением репозитория и файлов web-приложения. Минусами использования системы управления версиями при разработке web-приложения является то, что от разработчиков в данном случае требуется наличие знаний по работе с данной системой. Также следует отметить то, что приходится разворачивать локальную копию web-приложения на компьютере разработчика, но наличие таких пакетов разработки, как «Джентльменский набор Web-разработчика», заметно упрощает данный процесс.

8. Нагрузочное тестирование

8.1 Общие сведения

Нагрузочное тестирование применяется для того, чтобы определить, насколько производительно разработанное web-приложение и насколько оно готово к обслуживанию большого количества клиентов. Проведение нагрузочного тестирования, которое еще называют «стресс-тест», позволяет не только определить среднее значение пользователей, которые могут быть обслужены web-приложением без существенных задержек, но и определить «узкие места» web-приложения, т.е. ошибки в работе сценариев web-приложения, большие расходы ресурсов при запросах к СУБД, неверные конфигурации web-сервера и другие ошибки, которые могут вызвать замедление работы web-приложения.

8.2 Техника проведения нагрузочного тестирования

Для того чтобы провести нагрузочное тестирование, необходимо выполнить следующие действия:

1. Имитировать нагрузку на компьютер web-приложения;

2. Во время имитации нагрузки снимать показатели, важные для анализа результатов теста;

3. При необходимости повторить указанные выше пункты с большими значениями нагрузки;

Имитация нагрузки

Требования к способам имитации нагрузки:

- должна быть возможность указать время имитации;

- должна быть возможность указать количество одновременных запросов;

- должна быть возможность указать файл со списком адресов страниц web-приложения, на сценарии которых должна осуществляться нагрузка, должна быть возможность примерной имитации поведения пользователя сети Internet (случайные переходы и т.д.);

Наиболее подходящим средством является программа Siege [12], которая реализует указанные выше требования. Данная программа должна быть установлена на сторонний компьютер с операционной системой GNU/Linux, в нашем случае - GNU/Linux Ubuntu 10.4. После установки программу можно запустить из командной строки ОС.

Получение показателей нагрузки.

Для того чтобы получать показатели производительности, в системе «1С - Битрикс: Управление сайтом» предусмотрен модуль «Производительность». Данный модуль предоставляет возможность для просмотра результатов нагрузки на web-приложение, таких как время генерации страницы, количество и время запросов к СУБД в сценариях компонентов, расположенных на странице web-приложения и средние показатели нагрузки на компьютер web-приложения при обращении пользователя к той или иной странице. Для того чтобы осуществить анализ нагрузки на компьютер web-приложения, в модуле «Производительность» необходимо запустить временной сценарий, который принято в системе называть «панелью производительности».

Таким образом, техника нагрузочного тестирования, выбранная мной, заключается в сколь возможно одновременном запуске программы Siege на стороннем компьютере и панели производительности на компьютере web-приложения и последующей оценки данных, предоставляемых панелью производительности после завершения имитации нагрузки на компьютер web-приложения.

Проведение нагрузочного тестирования.

Для того, чтобы начать имитацию нагрузки на компьютер web-приложения, необходимо запустить в командной строке ОС стороннего компьютера процесс программы Siege:

[root@v8733 ~]# siege - c 50 - d 1 - t300S - f /home/dima/access_log.log

- c 50 - количество одновременных запросов к компьютеру web-приложения, t300S - время имитации, - d 1 - интервал между запросами (от 0 до 1 секунды), /home/dima/access_log.log - файл с адресами, на которые необходимо осуществлять запросы. Наиболее простым способом получения файла access_log.log является написание специальной функции, которая будет вызываться каждый раз при загрузке какой-либо страницы web-приложения и фиксировать в определенном файле уникальные адреса страниц. Далее следует открывать страницы web-приложения, чтобы файл автоматически пополнялся адресами. Примерное количество адресов, достаточных для выполнения имитации, будем считать 150 адресов. Это число больше, чем физическое число страниц web-приложения, но в списке адресов имеются адреса запросов к страницам с разными параметрами GET и POST.

Для реализации сбора адресов была написана функция:

void write_access_log (string filepath)

где filepath - имя файла, в который будут записаны адреса посещаемых пользователями страниц. Исходный код данной функции представлен в приложении Д.

После запуска процесса Siege следует сразу же запустить панель производительности. В течение некоторого времени будет осуществляться анализ и фиксация данных нагрузки и в конце будет выведен результат в виде таблицы, по которому можно будет судить о способности web-приложения выдерживать нагрузки.

8.3 Оценка результатов тестирования

Для проведения первого теста было выбрано число одновременных пользователей, равное 100 (с=100) и время имитации, равное 300 секунд (t=300S).

[root@v8733 ~]# siege - c 100 - d 1 - t300S - i - f /home/dima/access_log.log

При проведении данного теста были получены следующие результаты:

Таблица 2 - Результаты теста 1; с=100, t=300S

Адрес страницы

Нагрузка, %

Среднее время формирования страницы, сек

/pc/index.php

49.43

6.0035

/index/new/all/index.php

18.92

10.6723

/pc/new/index.php

9.87

3.7513

/detail/index.php

5.99

1.7449

/index/top/index.php

1.39

3.0484

/xbox_360/index.php

1.20

2.0960

/about/index.php

0.80

1.9985

/advertisement/index.php

0.74

1.8442

/contacts/index.php

0.63

1.5661

/pc/upcoming/index.php

0.57

1.6750

/pc/top/index.php

5.62

0.4352

/search/index.php

2.92

0.7424

/index/new/index.php

1.94

2.6039

Данные результаты позволяют судить о том, что в сценариях компонентов имеются серьезные недочёты, из-за которых используется большое количество ресурсов компьютера и замедляется процесс формирования страницы и отправки её пользователю. Наиболее серьёзному анализу следует подвергнуть компоненты страниц /index/new/all/index.php. Как следует из диаграммы, размещенной на рисунке 7 (раздел 6), на данной странице находится компонент games.calendar. В процессе реализации логики работы компонента для получения свойств элементов информационного блока, указанного в настройках компонента, используется метод _CIBElement: GetProperties(), который выбирает все свойства элемента, следствием чего стало большое число запросов к web-приложению и формирование большого файла кэша (свыше 1 Мб). Данный метод был использован для универсальности работы компонента: в одном из шаблонов компонента можно было бы получить значение любого из свойств без дополнительных действий. Но платой за универсальность является замедление работы компонента. После совещания с заказчиком было принято решение изменить сценарий работы компонента, устранив указанные выше недостатки и тем самым понизив универсальность компонента, но значительно повысив производительность работы компонента.

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

Таблица 3 - результаты теста 2. с=100, t=300S

Адрес страницы

Нагрузка, %

Среднее время формирования страницы, сек

/pc/index.php

29.72

0.9559

/index/new/all/index.php

22.06

0.6110

/pc/new/index.php

4.13

0.7122

/detail/index.php

5.37

0.4817

/index/top/index.php

2.11

0.4624

/xbox_360/index.php

1.51

0.6463

/about/index.php

0.48

0.2360

/advertisement/index.php

0.72

0.5875

/contacts/index.php

0.48

0.4291

/pc/upcoming/index.php

1.03

0.9263

/pc/top/index.php

3.31

1.0613

/search/index.php

9.08

1.9390

/index/new/index.php

3.43

0.4970

Как видно из результатов теста 2, представленных в таблице 2, после изменения логики работы проблемного компонента нагрузка на компьютер web-приложения и время генерации страниц заметно уменьшились. Теперь только время генерации страниц /search/index.php и /pc/top/index.php превышает одну секунду. Это можно объяснить тем, что у компонентов games.search и games.raiting не включено кэширование. Для устранения проблемы необходимо включить кэширование данных компонентов.

Теперь, после устранения всех проблем, выявленных при предыдущих тестах, можно увеличить число одновременных пользователей при имитации нагрузки до 300 и увеличить время имитации до 600 секунд (10 минут), чтобы оценить поведение web-приложения при больших нагрузках.

[root@v8733 ~]# siege - c 300 - d 1 - t600S - i - f /home/dima/access_log.log

После окончания имитации были получены следующие результаты:

Таблица 4 - Результаты теста 3. с=300, t=600S

Адрес страницы

Нагрузка, %

Среднее время формирования страницы, сек

/pc/index.php

33.79

0.4454

Таблица 4 - результаты теста 3. с=300, t=600S.

/index/new/all/index.php

23.66

0.2403

/pc/new/index.php

5.00

0.3264

/detail/index.php

4.28

0.1797

/index/top/index.php

2.49

0.2138

/xbox_360/index.php

1.74

0.3262

/about/index.php

0.26

0.1330

/advertisement/index.php

0.61

0.1560

/contacts/index.php

0.45

0.1843

/pc/upcoming/index.php

0.48

0.2465

/pc/top/index.php

2.82

0.3863

/search/index.php

5.28

0.3390

/index/new/index.php

3.78

0.2219

Как видно из результатов теста со значениями параметров c=300 и t=600S, время генерации страниц и нагрузка на компьютер web-приложения заметно уменьшились, чему поспос обствовало включение кэширования во всех компонентах и исправление ошибок разработки. Число в 300 одновременных посетителей является достаточно большим и в то же время не вызывает долгой генерации страниц (долгим считается время генерации страницы пользователям с временным промежутком более 1-2 секунд), что позволяет сделать вывод о том, что web-приложение обладает еще большим запасом ресурсов для обслуживания посетителей.

Заключение

В дипломной работе осуществлена разработка информационного web-сайта на основе системы «1С - Битрикс: Управление сайтом».

В процессе выполнения дипломной работы была спроектирована и реализована структура хранения данных web-сайта, спроектирована и реализована структура страниц web-сайта, написан код программных компонентов. Для обеспечения сохранности данных было настроено автоматическое резервное копирование таблиц базы данных и файлов файловой структуры web-сайта. Для обеспечения возможности командной разработки была настроена система управления версиями Subversion. Для проверки производительности web-сайта было проведено нагрузочное тестирование с последующей оценкой результатов тестирования и корректировкой сценариев работы web-сайта согласно результатам тестирования.

В результате работы был получен web-сайт, удовлетворяющий требованиям заказчика и доступный всем пользователям сети Internet. Web-сайт был оптимизирован под высокие нагрузки согласно результатам нагрузочного тестирования.

Список источников

программирование приложение сайт javascript

1. Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5. - СПб.: БХВ - Петербург, 2004. - 560 с.

2. Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. - СПб.: БХВ - Петербург, 2007. - 608 с.

3. Робачевский А.М., Немнюгин С.А., Стесик О.Л. Операционная система UNIX. - 2-е изд., перераб. и доп. - СПб.: БХВ-Петербург, 2007. - 656 с.

4. Ben Collins-Sussman, Brian W. Firzpatrick, C. Michael Pilato. Version Control with Subversion.: O'Reilly Media, Inc. 1005 Gravenstein Highway North, Sebastopol, 2004. - 277 p.

5. Васвани В. Полный справочник по MySQL. - М.: Издательский дом «Вильямс», 2006. - 528 с.

6. Бадд Э., Молл К., Коллизон С. Мастерская CSS: профессиональное применение Web - стандартов. - М.: ООО «И.Д. Вильямс», 2007. - 272 с.

7. Бибо Б., Кац И. jQuery. Подробное руководство по продвинутому JavaScript. - СПб.: Символ-Плюс, 2009. - 384 с.

8. Дари К., Бринзаре Б., Черчез-Тоза Ф., Бусика М. AJAX и PHP: разработка динамических веб-приложений. - СПб.: Символ-Плюс, 2007. - 336 с.

9. Конверс Т., Парк Д., Морган К. PHP 5 и MySQL. Библия пользователя. - М.: Издательский дом «Вильямс», 2009. - 1216 с.

10. «1С - Битрикс: Управление сайтом». Документация для разработчиков. URL: http://dev.1c-bitrix.ru/api_help/ (дата обращения: с 30.03.2010 по 01.06.2010).

11. Википедия - свободная энциклопедия. URL: http://ru.wikipedia.org/wiki/ (дата обращения: с 30.03.2010 по 01.06.2010)

12. Joe Dog Software - Siege Home. URL: http://joedog.org/index/siege-home (дата обращения: 10.05.2010)

13. World Wide Web Consortium (W3C). URL: http://www.w3.org/ (дата обращения: 05.04.2010).

Размещено на Allbest.ru


Подобные документы

  • Исследование возможностей и областей использования языка программирования JavaScript. Сравнительный анализ языков программирования JavaScript и PHP. Разработка интерактивного Web-приложения на примере теста по теме "Программирование на языке Delphi".

    практическая работа [26,0 K], добавлен 04.02.2015

  • Разработка приложения на базе скриптового языка программирования JavaScript, с использованием каскадных таблиц стилей CSS в среде программирования Bluefish Editor. Обоснование выбора инструментов. Применение клавиш управления памятью калькулятора.

    курсовая работа [3,8 M], добавлен 22.06.2015

  • Сравнительная характеристика, возможности и функции языков программирования JavaScript и PHP. Основные области их использования. Разработка интерактивного Web-приложения с применением JavaScript на примере теста по теме "Программирование на языке Delphi".

    курсовая работа [19,3 K], добавлен 01.07.2014

  • Практическая значимость создания сайта. Язык программирования JavaScript. Основные области использования языка JavaScript при создании интерактивных HTML-страниц. Язык программирования PHP. Программная основа сайта. Создание оформления дизайна сайта.

    дипломная работа [1,1 M], добавлен 05.03.2013

  • Рассмотрение и ознакомление с одним из наиболее используемых языков программирования - С++. Его применение в процессе работы со строковыми типами данных и символами. Исследование кодов написания программ в режиме разработки консольного приложения.

    курсовая работа [6,1 M], добавлен 20.01.2016

  • Изучение технологий HTML, CSS, языка программирования PHP и методов работы с СУБД MySQL. Разработка сайта "Органайзер", позволяющего добавлять события на конкретную дату, просматривать, изменять и удалять их. Применение каскадной таблицы стилей CSS.

    курсовая работа [894,2 K], добавлен 22.07.2017

  • Создание индивидуального сайта с использованием языка гипертекстовой разметки HTML и языка скриптов JavaScript. Программные средства, используемые при выполнении работы. Основные средства для создания сайта. Разработка CSS-файла (таблица стилей).

    лабораторная работа [31,0 K], добавлен 28.10.2010

  • Применение языков программирования в web-разработках. Создание документа с поддержкой гипертекста с помощью HTML. Использование JavaScript для программного доступа к объектам приложений. Perl - процедурный язык программирования; псевдообъектный язык PHP.

    курсовая работа [260,9 K], добавлен 07.07.2013

  • Язык программирования как формальная знаковая система, предназначенная для записи программ, его отличие от естественных языков. Прописные и строчные буквы латинского алфавита. Ключевые слова языка программирования. Классическая схема создания программы.

    презентация [1,2 M], добавлен 19.02.2014

  • Значение и обзор современных средств веб-программирования на основе языков четвертого поколения. Технологические особенности разработки структуры сайта Интернет-магазина средств связи. Способы форматирования контента, систем навигации и дизайна сайта.

    контрольная работа [3,2 M], добавлен 15.02.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.