Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
rusldv
7 лет назад

PHP - Как работает сервер

PHP - Урок 3. Как работает сервер.



Программа на компьютере, который подключен к Интернету и слушает какой-либо порт называется серверором. Она например, может прослушивать порт 80. (на самом деле в 80% случаев порты слушает специальная программа inetd, потом просто запускает программу, которая подписана на определенный порт и направляет ей поток данных, приходящий в порт).

Запустившись программа-сервер (такая как apache или nginx) читает запрос от клиента, и в соответствии с ним что-то делает. Например от предыдущего нашего запроса:

GET /test/page.html HTTP1.1
Host: thesite.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
(пустая строка)  

сервер узнает, что мы хотим от него получить(GET) файл, который находится по пути /test/page.html и что мы используем версию протокола HTTP - 1.1

Однако есть еще один немаловажный момент. Что если на одном сервере с одним IP находится много сайтов. А здесь как раз в дело вступает заголовок Host.
Дело в том, что когда мы настраиваем сервер, мы обязательно указываем в его конфигурации, какие сайты на нем будут работать. Для этого мы добавляем в главный файл ссылку на папку с файлами-хостами или прописываем их прямо в главном файле настроек.

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

Виртуальный хост:
Имя хоста: thesite.ru
Порт: 80
Путь к файлам хоста: /var/www/thesite.ru/
Ошибки и логи сюда /var/logs/wwwlogs/thesite.ru/

После этого мы перезапускаем сервер - он считывает конфигурацию (файлы с настройками) и узнает, что у него новый виртуальный хост, у которого имя thesite.ru
Теперь если на порт 80 приходит запрос, то программа-сервер зачитывает заголовок Host и ищет есть ли где в его конфигурации такое название хоста.
Если он его находит, то он подставляет Путь к файлам хоста к тому что запрошено в GET. То есть теперь у нас получается такой запрос

/var/www/thesite.ru/test/page.html

сервер находит этот файл (или не находит 404-Not found) и отдает его клиенту, предварительно подготовив ответ для протокола HTTP
Выглядит ответ сервера примерно так:

HTTP/1.1 200 OK
Date: Mon, 30 Jan 2017 14:30:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Mon, 30 Jan 2017 14:30:59 GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
(пустая строка)
(далее следует запрошенная страница в HTML у нас это файл page.html из папки test сайта)

Здесь сервер отвечает 200 OK - что означает, что запрошенный в GET файл найден (если бы не нашел прислал 404). Другие заголовки также важны браузеру, например время и время последней модификации позволяет ему работать с кэшем страниц.
Опять же пустая строка как и в случае запроса отделяет заголовки ответа от самих данныx. В нашем случае вслед за заголовками передается html-страница.

Затем браузер, загрузив страницу, берет и отрисовывает ее нам, как мы привыкли их видеть.


Теперь мы знаем как работает сервер. Однако мы разобрали это на статических файлах. Для динамических страниц к делу подключается специальная программа - интерпретатор. Одной из ни является и PHP. О PHP-интерпретаторе и как он взаимодействует с web-сервером буду рассказывать в следующей статье.
64
403.139 GOLOS
На Golos с November 2016
Комментарии (2)
Сортировать по:
Сначала старые