Сайт использует сервис веб-аналитики Яндекс Метрика с помощью технологии «cookie». Пользуясь сайтом, вы даете согласие на использование данной технологии.
Работа сервера и заблуждения в PHP [HTTP Framework, 3]
Перед написанием HTTP-фреймворка на PHP полезно разобраться в устройстве протокола HTTP. И понять, какими способами мы можем запускать наш программный код на сервере. Использовать ли модуль для Apache или настроить работу по CGI или FastCGI. Либо вообще запустить синхронный или асинхронный сервер на самом PHP. В зависимости от выбранного способа наш код должен работать по-разному. И ситуация порой осложняется тем, что программисты, знакомящиеся с PHP, слабо разбираются в том, что реально происходит на сервере. Как производится работа с заголовками и телом запроса и ответа, откуда берутся суперглобальные массивы и как работают сессии. И по исторически сложившимся причинам порой имеют заблуждения, затрудняющие их общение с программистами на других языках. В этом эпизоде мы пройдём полный путь от написания программ на разных языках программирования до запуска их на серверах Apache и Nginx разными способами. От запуска в терминале до использования менеджера процессов и написания нативного сервера. Проследим за каждым нюансом работы в разных окружениях и по разным протоколам: 00:00:00 - Приветствие 00:00:07 - Постановка задачи 00:02:12 - Протокол HTTP 00:04:20 - Различия версий HTTP 00:06:35 - Структура HTTP-запроса 00:09:25 - HTTP-ответ сервера 00:10:51 - Форматы тела ответа 00:13:06 - Уточнение запроса 00:14:16 - Операции с записями 00:16:02 - Формат тела запроса 00:18:50 - Формат отправки HTML-форм 00:22:44 - Установка и передача Cookies 00:23:51 - Сходство и различие запроса и ответа 00:24:55 - Выбор сервера для экспериментов 00:25:56 - Установка Apache 00:28:05 - Раздача статических файлов 00:28:55 - Просмотр заголовков в браузере 00:30:56 - HTTP-клиент в PhpStorm 00:32:59 - Запуск PHP-кода через модуль 00:36:02 - Переход к альтернативам 00:36:54 - Протокол CGI 00:37:34 - Запуск программ в терминале 00:38:15 - Потоки ввода и вывода 00:44:11 - Аргументы командной строки 00:44:45 - Переменные окружения 00:46:54 - Написание и запуск программы 00:49:39 - Вывод аргументов 00:50:39 - Отображение stdin и env 00:52:39 - Консольная программа на PHP 00:57:08 - Протокол CGI 00:58:43 - Запуск через CGI в Apache 01:01:29 - Вспомогательные заголовки 01:04:11 - Получение данных запроса 01:08:09 - Получение JSON 01:11:11 - Суперглобальный массив SERVER 01:13:42 - Массивы для CGI 01:14:49 - Использование PHP-CGI 01:16:57 - Динамический запуск скриптов 01:21:45 - Переопределение SCRIPT_FILENAME 01:25:42 - Переход на PHP-CGI 01:27:34 - Встроенные процедуры 01:29:40 - Работа с PHP-CGI в Apache 01:32:42 - Массивы GET и POST 01:35:45 - Массив FILES 01:36:15 - Потоки input и output 01:39:07 - Работа с Cookies 01:41:36 - Устройство сессий в PHP 01:44:43 - Где хранятся данные сессии 01:47:16 - Перенос сессий в другие хранилища 01:49:01 - Промежуточный итог 01:51:43 - Специфические заголовки для сервера 01:53:20 - Сложности реализации HTTP 01:54:56 - Протокол FastCGI 01:56:35 - Спецификация FastCGI 01:58:57 - Менеджер процессов PHP-FPM 02:01:47 - Подключение PHP-FPM к Apache 02:03:12 - Установка Nginx 02:05:27 - Подключение PHP-FPM к Nginx 02:12:11 - Промежуточный итог 02:12:46 - Единый подход в коде 02:14:21 - Написание своего сервера 02:15:17 - HTTP-сервер на JavaScript 02:17:34 - HTTP-сервер на PHP 02:20:42 - Асинхронные серверы для PHP 02:23:02 - Доступ к тексту запроса 02:23:49 - Заблуждения PHP-программистов