Взаимодействие модулей портала Пользователь Браузер Веб-сервер Apache Серверные приложения PHPобработчик База данных SQLite Файловая система сервера Файл базы данных CSS / JS Медиаконтент Браузер на стороне пользоваться взаимодействует в веб-сервером по средствам протокола HTTP. Браузер получает различного рода контент: HTML-страницы, стили оформления (CSS), сценарии для обработки данных (JavaScript), данные в формате JSON, медиа-контент (изображения, файлы пользователя). Веб-сервер в зависимости от запрашиваемого ресурса предоставляет либо файлы напрямую (стили, сценарии, медиа-контент), либо пропускает через обработчик PHP. PHP-обработчик формирует либо страницу формате HTML, либо данные в формате JSON (для асинхронных запросов). При этом PHP-обработчик может обращаться к базе SQLite, файл данных которой также расположен на файловой системе того же сервера. Взаимодействие браузера с веб-сервером Браузер пользователя подключается к веб-серверу по протоколу TCP/IP. Установив соединение, браузер отправляет запросы серверу и получает ответы про протоколу HTTP. HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста») — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов в формате HTML, в настоящий момент используется для передачи произвольных данных). Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом. Каждое HTTP-сообщение состоит из трёх частей, которые передаются в указанном порядке: Стартовая строка (англ. Starting line) — определяет тип сообщения; Заголовки (англ. Headers) — характеризуют тело сообщения, параметры передачи и прочие сведения; Тело сообщения (англ. Message Body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой. Заголовки и тело сообщения могут отсутствовать, но стартовая строка является обязательным элементом, так как указывает на тип запроса/ответа. Исключением является версия 0.9 протокола, у которой сообщение запроса содержит только стартовую строку, а сообщения ответа только тело сообщения. Для версии протокола 1.1 сообщение запроса обязательно должно содержать заголовок Host. Стартовые строки различаются для запроса и ответа. Строка запроса выглядит так: GET URI — для версии протокола 0.9. Метод URI HTTP/Версия — для остальных версий. Здесь: Метод (англ. Method) — название запроса, одно слово заглавными буквами. В версии HTTP 0.9 использовался только метод GET, список запросов для версии 1.1 представлен ниже. URI определяет путь к запрашиваемому документу. Версия (англ. Version) — пара разделённых точкой цифр. Например: 1.0 Чтобы запросить страницу данной статьи, клиент должен передать строку (задан всего один заголовок): GET /page/help HTTP/1.1 Host: moshkovo-nso.ru Стартовая строка ответа сервера имеет следующий формат: HTTP/Версия КодСостояния Пояснение, где: Версия — пара разделённых точкой цифр как в запросе. Код состояния (англ. Status Code) — три цифры. По коду состояния определяется дальнейшее содержимое сообщения и поведение клиента. Пояснение (англ. Reason Phrase) — текстовое короткое пояснение к коду ответа для пользователя. Никак не влияет на сообщение и является необязательным. Сервер возвращает ответ, где в теле ответа содержится данные в различном формате. Для отображения страницы используется формат HTML, для оформления страницы используется правила, оформленный в виде каскадных таблиц стилей CSS. Для функционирования бизнеслогики на стороне клиент могут исполняться сценарии JavaScript, которые также передаются сервером по запросу по протоколу HTTP. Сценарий JavaScript может инициировать запросы к серверу, для уточнения каких-либо данных или для манипуляции данными на сервере. Такие запросы как правило не приводят перезагрузке страницы целиком, так как запрашиваются только данные без HTML-разметки, а сценарий полученные данные встроит в страницу сам. При таком методе обмена используется протокол JSON, который позволяет легко представлять сложные структуры данных. Формат JSON простым способом может быть обработан как на стороне сервера (PHP), так и на стороне клиента (JavaScript). Для отображения страниц запросы проходят обработку в интерпретатор PHP, который либо формирует страницу в формате HTML, либо формирует данный в формате JSON. Любые другие данные, такие как изображения, пользовательские файлы, сценарии, стили – все они не проходят обработку в PHP и отдаются веб-сервером напрямую в браузер. Данные о содержимом страниц, о событиях календаря, о именах файлов и их дате хранятся в базе данных SQLite. Подключение к базе данных PHP организует на прямую к файлу базы данных через динамическую библиотеку. Таким образом информация из базы данных попадает в PHPобработчик, а оттуда через веб-сервер клиенту в браузер.