РНР (это рекурсивный акроним — РНР: Hypertext Preprocessor) представляет собой язык с открытым исходным кодом (open source) для выполнения на сервере сценариев, создающих динамические веб-страницы. Помимо независимости от броузеров он предлагает простое и универсальное, независимое от платформы решение для электронной коммерции и сложных веб-приложений, в том числе управляемых базами данных.

Почему РНР?
Для РНР характерны:

  • Низкая и плавная кривая обучения.
  • Развитая функциональность для работы с базами данных, строками, сетевыми соединениями, поддержка операций с файловыми системами, Java, COM, XML, CORBA, WDDX и Macromedia Flash.
  • Совместимость с платформами: UNIX (любые разновидности), Win32 (NT/95/98/2000), QNX, MacOS (WebTen), OSX, OS/2 и BeOS.
  • Совместимость с серверами: модулем Apache (UNIX, Win32), CGI/Fast-CGI, thttpd, fhttpd, phttpd, ISAPI (IIS, Zeus), NSAPI (Netscape iPlanet), механизмом сервлетов Java, AOLServer и модулем Roxen/Caudium.
  • Короткий цикл разработки. Новые версии с исправлением найденных ошибок, дополнительными функциями и прочими усовершенствованиями выпускаются каждые несколько месяцев.
  • Энергичное и доброжелательное сообщество разработчиков. Изобилие программных примеров и бесплатного кода. Группа разработчиков РНР отлично справляется с обеспечением новичков ресурсами и поддержкой.
  • Простота расширения. Можно легко создавать собственные расширения языка.
  • Простой синтаксис, напоминающий С. Опытные программисты С, C++, Perl и командных сценариев легко осваивают РНР. Добавьте к этому открытость кода и бесплатность.

Эволюция РНР
Для новичков в РНР предлагается краткий обзор его происхождения, текущего состояния и направлений дальнейшего развития.

РНР в прошлом
Мы изложим историю РНР лишь кратко, а читателям, интересующимся подробностями, рекомендуем обратиться к ознакомительным материалам по РНР на http://conf.php.net/ или прочесть раздел Brief History (краткая история) руководства по PHP/FI 2 на http://php.net/docs.php. Замысел РНР возник у Расмуса Лердорфа (Rasmus Lerdorf) осенью 1994 года. Версия 1 этого языка появилась в начале 1995 года и была положительно воспринята небольшой группой пользователей. Позднее в том же году вышла версия 2, за которой последовали версии 3 и 4 в 1997 и 2000 годах, соответственно.

РНР в настоящее время
PHP использовался по меньшей мере в семи миллионах доменов (источник — Netcraft Survey), то есть 20% всех зарегистрированных на тот момент доменов. А это существенная часть рынка, если еще учесть, что в это число не входят многочисленные установки в корпоративных сетях и закрытых серверах разработчиков.

РНР может работать на 7 основных платформах (стабильно), с 10 интерфейсами серверов (стабильно), поддерживает 40 стабильных расширений (и примерно столько же экспериментальных), предлагает поддержку свыше 20 баз данных. Эти цифры подтверждают, что своей нынешней популярности РНР достиг благодаря мощи и простоте использования.

РНР на арене

В РНРЗ синтаксический анализ и компиляция кода РНР происходили одновременно, благодаря чему сокращалось базовое время запуска до начала выполнения. Это было основной причиной быстрого выполнения простых сценариев. К сожалению, при необходимости обработки сложных сценариев возникала избыточность, связанная с повторяющимся синтаксическим анализом участков кода, например при обработке циклов и многократных вызовах функций. Виновато было основное ядро, и стало очевидно, что именно на нем надо сосредоточить усилия, направленные на повышение производительности, — это и стало побудительным мотивом к разработке РНР4.

Здесь нельзя не упомянуть о большом вкладе фирмы Zend в разработку РНР. Настоятельно рекомендуем посетить http://www.zend.com/zend/whats-new.php и узнать подробности о новых возможностях, появившихся в РНР4.

Перспективы РНР
Машина сценариев РНР4 представляет собой переработанную машину сценариев РНРЗ, предоставляет более ясную инфраструктуру и сервисы для функциональных модулей и реализует синтаксис языка. Эта пересмотренная версия в значительной мере основана на тех же правилах синтаксического анализа, что и машина сценариев РНРЗ, что обеспечивает хорошую обратную совместимость и переход от РНРЗ к РНР4. Однако у этой медали есть и оборотная сторона — ограниченность усовершенствований языка в сравнении с РНРЗ.

При поддержке многочисленных разработчиков РНР фирма Zend Technologies Ltd начала переработку машины Zend Engine, в которой будут содержаться новые функции, усовершенствованы имеющиеся и решены некоторые из самых значительных проблем, с которыми сталкиваются сегодня разработчики РНР. Если вы пристально следите за развитием РНР, советуем поместить http://www.zend.com/zend/future.php в свой список избранных ссылок, а также подписаться на еженедельный бюллетень новостей Zend 2.0 на http://www.zend.com/zend/zengine/.

РНР в сравнении с другими языками сценариев
Для тех, кто перешел на РНР с других языков сценариев, мы включили этот раздел, в котором объясняется, почему они сделали правильный выбор.

РНР и ASP
ASP (Active Server Pages) является фирменным языком сценариев Microsoft. Вообще говоря, ASP — это не язык, а расширение Visual Basic для создания сценариев. По этой причине всякому, кто знаком с Visual Basic, относительно легко освоить ASP.

Каковы недостатки? Во-первых, ASP обычно работает медленнее, чем РНР. Фундамент ASP образует архитектура, основанная на СОМ. Поэтому когда программа ASP обращается к базе данных или осуществляет вывод данных для клиента, это происходит при посредстве СОМ-объектов других сервисов NT или уровней операционной системы. Эти связанные с СОМ накладные расходы могут накапливаться и приводить к тому, что во всех случаях, кроме выдачи простых страниц при среднем трафике, производительность оказывается невысокой. Во-вторых, ASP не вполне годится для переноса на другие платформы и интеграции со средствами GNU, а также средами и серверами open source. Будучи фирменной системой Microsoft, ASP в основном применяется с ее же Internet Information Server (IIS), из-за чего ASP обычно выбирают ограниченно — для 32-разрядных систем Windows, поскольку для большинства серверов эта технология служит бесплатным приложением. Существуют версии ASP для UNIX (например, ChilliSoft ASP) и ряд интерпретаторов ASP для других систем и веб-серверов, однако для них стоимость системы с учетом ее производительности может оказаться неоправданно высокой. Решением данной проблемы может оказаться использование программы asp2php (http://asp2php.naken.cc/), которая преобразует ASP в РНР. Однако технология ASP.NET весьма отличается. В будущем ASP может существенно поднять свою производительность и возможность масштабирования. Это будет достигнуто дальнейшим усилением архитектуры .NET/COM и управляющей среды. Однако реальных преимуществ можно достичь лишь при условии значительных затрат на различные сопутствующие серверы.

РНР и Cold Fusion
РНР работает практически на всех платформах, а версии Cold Fusion есть только для Win32, Solaris, Linux и HP/UX. РНР требует больших начальных навыков программирования, в отличие от Cold Fusion с совершенной интегрированной средой разработки (IDE) и более простыми языковыми конструкциями. РНР менее требователен к ресурсам.

РНР и Perl
Будучи разработанным специально для Интернета, РНР имеет в этой области преимущества над Perl, поскольку Perl разрабатывался для бесчисленных применений (что отразилось на его виде). Форма и синтаксис Perl могут осложнить чтение сценариев Perl и их модификацию, когда она требуется. Хотя Perl в ходу достаточно долго (он был разработан в конце 1980-х) и широко поддерживается, он превратился в сложную конструкцию из дополнений и расширений и часто просто избыточен. Формат РНР легче для восприятия при сохранении гибкости. РНР проще интегрируется с уже имеющимся HTML и предлагает функциональность, аналогичную Perl, но со значительно большим изяществом.

РНР и Java
PHP проще использовать, чем Java, с его помощью легче строить веб-приложения, обладающие такими же преимуществами гибкости и масштабируемости. Работая с РНР, не обязательно обладать 5-летним опытом разработки программного обеспечения, чтобы создавать простые динамические страницы — для этого достаточно быть сообразительным, даже при небольшом опыте программирования.

Кроме того, Java часто обходится дороже, поскольку в большинстве компаний в конечном счете устанавливают отдельную машину для Java Enterprise и используют Oracle или другое дорогостоящее ПО. При всем этом РНР требует дальнейшего развития, поскольку не обладает такой же переносимостью и некоторыми удобными возможностями, такими как пул объектов или отображение баз данных, которые есть в Java. Эти вопросы учтены при проектировании машины сценариев Zend 2.O.

 

Лицензирование РНР
Ранее РНР выпускался как с лицензией GPL (General Public License), так и со своей собственной, и отдельные пользователи могли выбрать из них предпочтительную для себя. В настоящее время программа в целом выходит сосвоей крайне неограничительной лицензией РНР4 (http://download.php.net/license/2_02.txt).

Подробности можно найти на http://www.zend.com/license/ZendLlcense/. Кроме того, в пресс-релизе компании говорилось о переходе на лицензию типа BSD, чтобы обеспечить совместимость с лицензией РНР и предоставить больше свободы для дальнейшего развития.

 

Список ресурсов
Даже количество ресурсов РНР ошеломляет. Вот некоторые достаточно важные ресурсы, которые часто упускают:

  • Официальный сайт РНР (http://php.net/)
    Веб-сайт РНР известен всем. Однако на нем можно найти массу информации. Часто имеет смысл покопаться на php.net, прежде чем двигаться куда-то еще. Иногда нужную информацию найти на этом сайте оказывается нелегко, но она стоит потраченных усилий.
  • Архивы презентаций на конференциях РНР (http://conf.php.net/)
    В архиве этого сайта хранится множество презентаций, сделанных ведущими членами сообщества РНР.
  • PHP4WIN (http://www.php4wln.com/)
    PHP4Win — отличный источник ресурсов для разработчиков программ РНР под Windows.
  • Архивы почтового списка рассылки РНР (http://php.net/support.php)
    Архивы почтового списка рассылки РНР содержат массу информации. Многие почтовые списки непрерывно архивировались в течение нескольких лет. В архивах хранятся ответы на многие вопросы.
  • Последние сборки дистрибутивов РНР (http://snaps.php.net/)
    Для РНР характерен очень быстрый цикл разработки. Добавление функций и исправление ошибок происходят ежедневно. Если требуется получить последнюю версию РНР, чтобы воспользоваться новой возможностью или исправлением ошибки, можно загрузить с этого сайта версию РНР, давность которой составляет несколько часов или дней.
  • Веб-интерфейсы к хранилищу исходного кода РНР
    Есть три разных средства для on-line просмотра репозитория CVS. CVS это программное средство контроля версий, с помощью которого разработчики РНР справляются со многими сотнями файлов, образующих проект РНР. Дополнительные сведения о CVS можно получить на http://www.cvshome.org/.Эти интерфейсы можно найти по следующим адресам:
    http://cvs.php.net/ предоставляет простой интерфейс к CVS-хранилищу для РНР
    http://bonsai.php.net/
    http://lxr.php.net/ предоставляет мощные функции поиска и индексации, превосходящие те, которые обеспечивает http://cvs.php.net/
  • PHPBuilder (http://www.phpbuilder.com/)
    PHPBuilder — это обширный сайт, куда помещают информацию о совместном использовании РНР и практически любых других продуктов. Здесь находится большое количество вспомогательной информациии документации.
  • Проект Apache (http://www.apache.org/)
    Официальный сайт самого популярного веб-сервера в мире. На этом сайте есть документация по установке, настройке и решению проблем веб-сервера Apache, а также полезные сведения о создании для него собственных модулей.
  • Официальный сайт MySQL (http://www.mysql.com/)
    MySQL является предпочтительной базой данных для многих программистов РНР. Она выпускается под открытой лицензией MySQL Free Public License. Дополнительные сведения об этой лицензии можно найти на официальном сайте MySQL.
  • Официальный сайт PostgreSQL (http://www.postgreSQL.org/)
    Здесь можно познакомиться с историей PostgreSQL, загрузить экземпляр PostgreSQL, просмотреть официальную документацию и узнать многое другое, в том числе, как правильно произносить PostgreSQL

Просмотры: (448)