«Как колбаса сделана», тур по взаимодействию apache / php / mysql - PullRequest
36 голосов
/ 09 июня 2009

У меня проблемы с пониманием того, как стек apache / php / mysql работает на низком уровне (включая взаимодействие с браузером). Есть ли где-нибудь хорошее описание (книга, веб-сайт и т. Д.), Которое проведет меня по всему пути и объяснит, как начиная с запроса браузером URL-адреса, http-запросы отправляются, как apache общается с php, как php общается с mysql (постоянные и непостоянные соединения) и т. д., и т. д. Я хочу понять, что ждет в этой цепочке, где обрабатываются тайм-ауты, как долго сокеты открываются и закрываются. Книга, статья может быть? Существует много документации по каждому отдельному компоненту, но я не могу найти "пошаговое руководство".

Объяснения, которые я вижу до сих пор, очень высокого уровня: смотри, вот счастливая корова, она идет в Университет Бовина, смотри - она ​​вся в термоусадочной пленке на полке супермаркета. Что мне нужно, так это колбасная ферма / бойня / грузовик / заводская экскурсия, начиная с осеменения коров:)

[обновление] На сегодняшний день я не нашел лучшего способа узнать об этих вещах, кроме чтения источника.

Ответы [ 5 ]

6 голосов
/ 10 июня 2009

PHP и MySQL на примере имеют довольно простую картину процесса, которую, я думаю, вы, вероятно, уже поняли.

Получение более глубокого понимания, чем эта картина, довольно долгое обсуждение. Как ни странно, вы можете прочитать книгу, которую я только что связал, для довольно хорошего описания. Если у вас есть более конкретные вопросы, я рекомендую открыть для них новые вопросы. Наслаждайтесь!

3 голосов
/ 16 июля 2009

Я нашел сайт, на котором есть, по крайней мере частично, содержание из книги Расширенное программирование на PHP Джорджа Шлосснагла.

Сайт находится по адресу: http://php.find -info.ru / php / 016 / toc.html . В частности, раздел Жизненный цикл PHP-запроса содержит множество мельчайших подробностей, включая некоторые исходные коды и диаграммы.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: IANAL, но, учитывая, что книга по-прежнему перечислена на Amazon , возможно, что содержание, указанное выше, нарушает все виды кодов, правил и / или законов. Я не собираюсь распространять или оправдывать незаконные или пиратские материалы, поэтому, если это так, удалите указанные ссылки.

1 голос
/ 24 июня 2009

Лучшим вариантом было бы получить хорошую книгу о стеке LAMP.

Быстрый ответ (попросите больше, если вам это нужно) Браузер связывается с веб-сервером по протоколу HTTP Сервер генерирует (давайте пока оставим как) результат html и отправляет его обратно. Каждый браузер понимает только протокол http (для этого анализа).

Теперь такие элементы, как значки, изображения, javascript и т. Д., Просто считываются с сервера apache и «копируются» в браузер. То же самое в простых файлах HTML. Разница в файлах php (я упрощаю здесь). Они передаются в модуль php, а ответ (модуля) возвращается в браузер.

Модуль php - это то, что понимает php. Мы здесь вместе? если да, то: Скрипт Php может (или не может) запрашивать данные с сервера MySQL, он должен подключаться, получать их или манипулировать ими и т. Д.

Подведение итогов: каждая из этих операций выполняется индивидуально на разных уровнях процесса. Вот что делает это «простым». Запросите дополнительную информацию, если хотите что-то более конкретное.

1 голос
/ 09 июня 2009

Вы правы в том, что есть целые книги, написанные о том, как все это сочетается, здесь есть ссылка на «прохождение», которое затрагивает основные части.

http://computer.howstuffworks.com/web-server.htm

Надеюсь, это поможет

0 голосов
/ 09 июня 2009

Насколько я понимаю, apache получает запрос и определяет, что с ним делать, основываясь на параметрах .htaccess или config. Затем он передает этот запрос в PHP для анализа, если это необходимо. PHP выполняет два сканирования кода, первый - предварительный анализ, он выявляет очевидные недостатки и запускает функции на верхнем уровне (игнорируя любые операторы if, циклы, include, evals или функции, основанные на lamda), перед анализом страницы серьезно. Я верю, что все, что сделано с помощью echo, возвращается как стандартный поток вывода и возвращается в apache. Если Apache тайм-аут страницы, он посылает сигнал kill в PHP, который закрывает объекты, печатает сообщения об ошибках, если необходимо, перед выходом. После выхода из страницы apache обращается к заголовкам и возвращает страницу.

Хотелось бы узнать больше об этом, поэтому, если кто-нибудь сможет объяснить это лучше или у меня есть исправление / расширение моего ответа, я бы хотел услышать это.

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