Автор работы: Пользователь скрыл имя, 17 Ноября 2012 в 20:18, контрольная работа
Как было сказано выше, РНР можно компилировать
в виде самостоятельного интерпретатора CGI
как модуль Apache.
Как было сказано выше, РНР можно компилировать
Если
РНР сконфигурирован как
Если РНР скомпилирован как модуль Apache (рис. 2.1), он выполняется в адресном пространстве процесса самого веб-сервера, благодаря чему обеспечивается заметное увеличение производительности по сравнению с обычными интерпретаторами CGI, являющимися самостоятельными процессами.
Некоторые функции, такие как постоянные соединения с базами данных (persistent database connections), доступны только в версии модуля Apache.
Теперь, когда мы знаем, как устанавливать РНР, стоит задаться вопросом, для чего вообще нужен РНР. Можно было бы ограничиться HTML - в конце концов, это старый испытанный метод создания веб-страниц. Почему необходимы «динамические» веб-страницы? Значительно проще овладеть в совершенстве HTML, чем изучать совершенно новую технологию.
Содержание многих веб-сайтов статическое, например научные статьи. Страницы на этих сайтах являются документами, состоящими из простого текста, изображений и гиперссылок на другие документы. Для сайтов такого типа обычно достаточно простых технологий на стороне клиента. HTML и каскадные таблицы стилей (CSS) предоставляют средства структурирования и представления содержимого страницы, а с помощью JavaScript при желании можно несколько оживить ее.
Однако Интернет и интранет все в большей степени используются для приложений, и большинство из них включает в себя базы данных. Эти сайты и приложения являются динамическими, поскольку их содержание меняется в зависимости от участвующих в них данных и действий пользователя. Именно здесь вступает в игру РНР. Благодаря запуску на сервере программ РНР можно создавать очень мощные приложения, взаимодействующие с базами данных и динамически создающие содержание.
Главное различие между страницами РНР и страницами HTML состоит в том, как с ними работает веб-сервер.
Что происходит со страницами HTML?
Когда от броузера поступает запрос страницы, веб-сервер делает следующие три шага:
• читает запрос от броузера;
• находит страницу на сервере;
• посылает страницу обратно броузеру через Интернет или интранет.
Что происходит со страницами РНР?
С помощью РНР добавляется еще один шаг. Вместо того чтобы отослать пользователю статическую страницу HTML, мы потребуем от сервера выполнить некоторые действия в соответствии с нашим кодом РНР:
РНР примет некоторые решения и создаст страницу, соответствующую конкретной ситуации. Поэтому при использовании РНР сервер действует следующим образом:
Что же такого делает РНР, чего не может HTML?
Решающее отличие состоит в том, что чистый HTML интерпретируется броузером, а не выполняется на сервере. Написав код, который должен выполняться на веб-сервере, можно достичь таких результатов, которые иначе были бы невозможны.
Например, мы хотим написать код страницы, которая извещает о новостях в среду, если запрос происходит в среду, а в четверг извещает о новостях в четверг. В другом случае мы хотим создать страницу, которая определяет тип броузера пользователя и, в зависимости от этого, оптимизирует запрашиваемые данные. С помощью РНР действия такого рода выполняются сервером на третьем шаге описанной последовательности.
Вот еще несколько примеров того, что можно делать с помощью РНР, но нельзя делать с помощью только HTML:
Этот перечень охватывает лишь то, что лежит на поверхности; в действительности РНР позволяет решать значительно более широкие задачи.
В сущности, РНР является лишь одной из нескольких технологий, которые можно использовать для создания более динамичных и интерактивных веб-страниц. В этом разделе мы остановимся на истории развития РНР и на некоторых конкурирующих с ним технологиях.
Первое поколение было представлено статическими публикациями — страницами, образованными с помощью HTML и состоящими из статических картинок и текста, которые можно было точно расположить, указав координаты х и у. Такие страницы достаточно элементарны, и чтобы получить с помощью такой технологии действительно производящие впечатление результаты, нужно быть экспертом в HTML или привлекать художника-оформителя! Кроме того, для обновления страницы необходимо редактировать HTML вручную или с помощью редактора, а вдобавок, статические страницы не были совместимы с базами данных. Помимо отображения текста и изображений с их помощью можно было сделать немногое.
Некоторое время WWW развивалась в направлении активных веб-сайтов, позволяющих посылать пользователю заказные страницы и предоставляющих для просмотра более динамичное содержание. Такие сайты создаются с помощью сочетания ряда языков и технологий, которые можно использовать отдельно или в комбинациях независимо друг от друга (в том смысле, что изучение одной технологии не предполагает необходимости предварительного знания другой).
Эти технологии молено разбить на две группы: технологии на стороне клиента и технологии на стороне сервера. В первую группу входят:
В число технологий, используемых на стороне сервера, входят:
Остановимся вкратце на каждой из них.
Все технологии являются относительно недавними нововведениями. Основной недостаток реализации функций на стороне клиента заключается в том, что вебмастер никак не может влиять на то, какое программное обеспечение используется для просмотра страницы. А поскольку компании хотят привлечь как можно больше пользователей с как можно большим числом различных броузеров, принятие новых технологий происходит очень медленно, и поддерживаются они лишь в новейших версиях основных броузеров. Напротив, технологии, используемые на стороне сервера, обычно не требуют какого-либо специального броузера, и принятие их в целом происходит быстрее.
Управляющие элементы ActiveX являются отдельными программами, которые известны как компоненты. Разрабатываются они на таких языках, как С++ или Visual Basic. Располагаясь на веб-странице, такой элемент реализует какую-либо специальную функцию, например, выводит диаграммы и графики, играет роль таймера, производит аутентификацию клиента или доступ к базе данных. Управляющие элементы ActiveX добавляются к страницам HTML с помощью тега <OBJECT>, который вошел в стандарт HTML. Встроенные в веб-страницу управляющие элементы ActiveX могут выполняться броузером или сервером.
Существует некоторое препятствие: управляющие элементы ActiveX разработаны Microsoft и, несмотря на совместимость со стандартом HTML, функционируют только в Internet Explorer. Некоторая поддержка ActiveX обеспечивается и для броузера Netscape при использовании подключаемого модуля (plug-in), поставляемого фирмой NCompass. Следовательно, на практике нельзя рассматривать ActiveX как не зависящий от платформы способ создания динамических страниц.
Апплет - это программа, написанная на языке программирования Java, которую можно включить в страницу HTML способом, похожим на тот, которым включается графический образ. Если для просмотра страницы, содержащей апплет, используется броузер, поддерживающий Java, код апплета пересылается на машину и выполняется броузером. Поскольку апплет написан на Java, он использует все преимущества этого языка, являясь автономным и не зависящим от платформы.
Языки сценариев предоставляют новичкам более легкий доступ к программированию. Языки сценариев для использования в Сети на стороне клиента были разработаны с целью создания динамической альтернативы статическому HTML. Когда броузер находит в коде HTML команду сценария, он транслирует этот сценарий в чистый HTML (если броузер понимает данный язык сценариев). Это позволяет разработчику создавать более интерактивные веб-страницы со значительно расширенной по сравнению со страницами чистого HTML функциональностью.
Основным языком сценариев, используемым на стороне клиента, служит JavaScript. Он поддерживается как Netscape Navigator (с версии 2), так и Microsoft Internet Explorer (с версии 3). Используемый на стороне клиента VBScript поддерживается только в Internet Explorer и потому не очень полезен для создания универсальных сценариев для Интернета. Тем не менее, он иногда применяется в интранет, использующих исключительно решения Microsoft.
Динамический HTML используется аналогично языку сценариев, поскольку сценарий интерпретируется броузером и создает представление страницы в HTML. На практике, единственное, что отличает динамический HTML от сценариев, - это то, что он позволяет осуществлять дополнительные функции, например, помещать анимацию на страницы и точно располагать графику и текст с использованием абсолютных координат. В конечном итоге, броузер все равно создает страницу из чистого HTML.
Несколько лет назад единственным практическим решением для размещения в Сети динамического содержания была технология под названием Common Gateway Interface (CGI - интерфейс общего шлюза). CGI-программы предоставляли сравнительно простой способ создания веб-приложения, получающего введенные пользователем данные, выполняющего запрос к базе данных и возвращающего результаты обратно броузеру. Как Microsoft, так и Netscape разработали собственные API, с помощью которых для обслуживания веб-запросов можно было создавать код, выполняющийся в рамках того же процесса (in-process). В число новейших предлагаемых технологий на стороне сервера входят Active Server Pages (ASP), Java Servlets и JavaServer Pages (JSP), хотя существует много других.
CGI является
наиболее часто используемой
сетевой технологией,
Наиболее крупным недостатком CGI-программирования является то, что оно плохо масштабируется. При каждом получении веб-сервером запроса создается совершенно новый процесс. Каждый процесс состоит из собственного набора переменных окружения, отдельного экземпляра необходимой среды этапа исполнения, экземпляра программы и памяти, выделенной для использования программой. Нетрудно представить себе, что может произойти с сервером, когда одновременно приходит большое количество запросов. Ресурсы сервера подвергаются большому испытанию, что может вызвать его отказ.
Видимо, в ответ на неэффективность CGI Microsoft и Netscape разработали собственные API, позволяющие разработчикам создавать серверные приложения в виде библиотек совместного доступа. Эти библиотеки загружаются в процесс веб-сервера и могут обслуживать несколько запросов, не создавая новых процессов. Они могут загружаться при запуске веб-сервера или по мере необходимости в них. Если в течение определенного времени они не используются, веб-сервер выгружает их из памяти.
Хотя выполняемые
в рамках процесса библиотеки являются
эффективным расширением веб-
Информация о работе Сравнение РНР как интерпретатора CGI и как модуля Apache