PHP, Apache и MySQL. Как происходит процесс их взаимодействия?

php, apache и mysql. как происходит процесс их взаимодействия?

Введение в работу веб-сервера Apache

Прежде всего, для понимания работы стека технологий PHP, Apache и MySQL необходимо изучить, как работает веб-сервер[1] и принимаемые им HTTP-запросы. Apache выбран нами не случайно. Он является самым распространенным веб-сервером в сети.

Так же существует двухуровневая архитектура. При её реализации веб-сервер NGINX выполняет запросы пользователя, отдавая статические документы (изображения, тексты, архивированные файлы), а Apache запускает интерпретатор PHP, который выполняет ваши скрипты.

Двухуровневая архитектура сложна для понимания и не совсем подходит для начинающих программистов, поэтому мы рассмотрим классическую схему PHP, Apache, MySQL. Её вполне достаточно для построения программ любого уровня.

Чтобы понять работу веб-сервера мы рассмотрим этапы загрузки страницы через браузер.

схема взимосвязи php, apache и mysql
Рис 1. Упрощенная схема HTTP-запроса на загрузку веб-страницы.
  1. При вводе имени домена в адресной строке, клике по ссылке в поисковой системе или на любом сайте, браузер обращается к DNS[2].DNS возвращает браузеру конкретный IP-адрес сервера, к которому привязан ваш сайт. Делается это для того, чтобы браузер знал, куда отправить запрос на получение страницы.
  2. Браузер совершенно прозрачно для вас формирует блок информации, именуемый HTTP-заголовками[3].
  3. Браузер посылает HTTP-запрос с заголовками серверу, на котором находится ваш сайт.
  4. Веб-сервер получает их и обрабатывает. Если запрошен статичный документ (изображение, медиа файл, архив с документами), то Apache отдает их как есть. Если же идет обращение к скрипту, то Apache запускает его на выполнение через интерпретатор, после чего выдает полученный результат.
  5. После обработки запроса, полностью сформированный ответ возвращается браузеру.

Выполнение скрипта PHP интерпретатором

По сути, в связке PHP, Apache, MySQL интерпретатор языка PHP является конечным звеном. Это значит, что для нормального функционирования серверной логики база данных MySQL может быть и не нужна.

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

Вернемся к принципу работы интерпретатора PHP. В основной массе случаев он устанавливается как модуль[4] веб-сервера Apache. Это значит, что PHP работает как часть другой программы. Когда Apache получает запрос от браузера, он его анализирует. Если было определено, что вызывается скрипт, происходит запуск PHP интерпретатора. После выполнения скрипта интерпретатором, веб-сервер отдает его результат браузеру.

Заметка
Принцип работы интерпретатора очень сложен. Углубляться в эту тему – задача совсем не для начинающих. Изучая синтаксис и команды языка в следующих уроках, вы поймете, каким функционалом обладает интерпретатор и как он обрабатывает те или иные задачи.

Обращение к базе данных MySQL

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

Может появиться вопрос, – «Зачем вообще нужна база данных в нашем стеке используемых технологий (веб-сервер apache, интерпретатор php и база данных MySQL)?». Ответ очень прост. Она реализует механизмы защиты целостности данных и несанкционированного доступа к ним. Кроме того, к информации на базе данных можно получить доступ гораздо быстрее, чем к данным, хранящимся в виде обычных файлов.

Многие поспорят с этим утверждением, так как хранилища базы данных тоже являются файлами или набором файлов, только сложно структурированным. Это так, но база данных реализует механизм кеширования[5]запросов в оперативной памяти. То есть она умеет заранее подготавливать часто запрашиваемую информацию и моментально её отдавать.

Нужно отметить, что для получения информации, ее изменения или удаления, у баз данных есть свой программный язык структурированных запросов (абр. SQL). Он не сложен, но требует изучения.

Термины, использованные в статье

  1. Веб-сервер - программа, принимающая HTTP-запросы от клиентов, как правило веб-браузеров, и выдающий им HTTP-ответы: разметку сайта, медиа файлы, изображения и д.р
  2. DNS – распределенная база данных, в задачи которой входит определение IP-адреса хоста (сервера, компьютера, устройства) по его доменному имени.
  3. HTTP-заголовки – часть HTTP-запроса, которая содержит административную информацию о самом запросе, сформированная в виде ключ-значение. В заголовках содержится информация о запрашиваемой странице, IP-адресе запросившей стороны, типе её браузера и многие другие.
  4. Программный модуль - программная конструкция, позволяющая при интеграции с системой придать ей дополнительный функционал.
  5. Кеширование – процесс сохранения ранее сформированной и имеющей большой потенциал повторного использования информации. Методы её сохранения сопряжены с механизмами ускоренного предоставления при запросе.

Последние публикации