3/25/2012

PHP: как работает php-сценарий

Прежде чем разрабатывать сценарии на php необходимо понимать как он выполняется. Чтобы это понять сначала нужно получить представления о взаимодействии между клиентом и сервером.

Основы клиент-серверной технолигии

Как правило клиент это веб-браузер, но могут быть и исключения из этого правила. В качестве клиента могут выступать и сами php-сценарии, однако это тема для отдельной статьи, поэтому поговорим об этом позднее и будем подразумевать под клиентом веб-браузер.


Сервер - программный компонент вычислительной системы, выполняющий сервисные (обслуживающие) функции по запросу клиента, предоставляя ему доступ к определённым ресурсам или услугам.

А веб-сервер - это сервер, принимающий HTTP-запросы от клиентов, обычно веб-браузеров, и выдающий им HTTP-ответы, обычно вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными.

И получается такая картина.


Но на самом деле все этим не ограничивается. Ведь когда пользователь вводит в строку адреса браузера адрес вроде www.google.com и нажимает Enter, то запрос идет на сервер доменных имен DNS (Domain Name System). DNS - это специальный сервер, который преобразует доменное имя узла в соответствующий ip-адрес узла. После получения запроса от клиента, в виде доменного имени, сервер DNS преобразует доменное имя в ip-адрес и отправляет его клиенту. После чего клиент делает запрос серверу по полученному ip-адресу.

Для чего все это нужно? Чтобы использовать не ip-адреса вроде 173.194.32.178, а имя вроде www.google.com. Так проще запомнить адрес ресурса в сети.

Исходя из всех приведенных данных получаем такую картину


Что делает веб-сервер

Получив запрос на документ, например, index.html, веб-сервер ищет этот документ в своей корневой директории и  если он существует извлекает его и отправляет содержимое этого документа клиенту.

Но что будет если запрашиваемый файл будет php-сценарием, например, index.php. В этом случае веб-сервер, не будет сразу передавать содержимое файла клиенту, а вначале передает его интерпретатору PHP для предварительной обработки. Интерпретатор PHP выполняет код php-сценария и отправляет вывод веб-серверу, чтобы тот отправил его клиенту.

Вывод php-сценария это как правило HTML-документ. Но во время выполнения сценария может происходить не только генерирование HTML-содержимого для клиента. Сценарий php может делать очень многое, но все это будет происходить на веб-сервере. Именно поэтому php - это серверный язык программирования. Это значит, что пользователю (клиенту) для выполнения сценария не нужно ничего кроме веб-браузера.

Интерпретатор PHP

Выше я упомянул о интерпретаторе PHP, что же это такое? Это та самая программа которая обрабатывает php-сценарии и возвращает их вывод вызывающей среде (веб-серверу). Самый простой интерпретатор анализирует и тут же выполняет программу по командно. 

Интерпретатор PHP, получив php-файл на обработку, ищет в нем блоки php выделенные специальными тегами (разделителями) <?php в начале и ?> в конце блока. Все что находится  за пределами этих блоков интерпретатор PHP игнорирует и передает обратно веб-серверу для отображения на стороне клиента.

Таким образом, файл php содержащий такой код

<html>
    <head>
        <title><?php echo 'Обработан интерпретатором PHP'; ?></title>
    </head>
    <body>
        <?php echo '<div>Обработка окончена</div>'; ?>
    </body>
</html>

после обработки интерпретатором будет иметь вид


<html>
    <head>
        <title>Обработан интерпретатором PHP</title>
    </head>
    <body>
        <div>Обработка окончена</div>
    </body>
</html>


Было обработано два блока php. Первый, выводит строку 'Обработан интерпретатором PHP' с помощью оператора echo. Второй тоже выводит строку, но в этой строку текст заключен в тег HTML - div. Этим способом очень часто пользуются в веб-программировании для динамического генерирования кода HTML в зависимости от каких либо условий, например даты.

Но можно также полностью контролировать вывод из кода PHP. Так предыдущий сценарий можно переписать так

<?php
    echo '<html>';
    echo '<head>';
    echo '<title>Обработан интерпретатором PHP</title>';
    echo '</head>';
    echo '<body>';
    echo '<div>Обработка окончена</div>';
    echo '</body>';
    echo '</html>';
?>

Результат обработки интерпретатором PHP будет такой же как в предыдущем примере.

Ну вот вообщем-то и все что нужно знать начинающему веб-разработчику о работе php-сценария. Следующим этапом будет изучение непосредственно синтаксиса языка PHP.

Комментариев нет:

Отправить комментарий