Акселерация PHP

PHP, на данный момент, самый распространенный язык программирования, который используется для обеспечения функционирования веб-сайтов, интернет-сервисов и других веб-проектов. Для этого есть ряд веских причин. Главной из них является простота реализации задач, связанных с разработкой веб-сайтов, поскольку сам язык был разработан для генерации HTML-страниц. Простота и функциональность языка, поддерживает как классическую, так и объектную модель кода, большое количество специалистов на рынке труда и поддержка практически всеми хостинг-провайдерами — вот основные причины его популярности.

Код PHP можно использовать как оформленный в отдельные программные модули, так и встраивать непосредственно в HTML-код, что, предоставляет возможность использовать различные приемы программирования, делает его крайне удобным для создания динамических страниц. Также это дает возможность максимально отделить программирование от веб-дизайна. Кроме того, PHP-код выполняется полностью на стороне сервера, что позволяет разработчику скрыть его.

В общем, при использовании PHP в реализации функционала веб-страницы принцип прост: вы просто формируете то, что должен получить браузер или иной клиент.

Классическим вариантом реализации поддержки PHP на веб-сервере есть интерпретатор, интегрированный в ПО сервера. Преимуществом такого варианта является простота настройки и возможность быстрого внесения изменений в код. Но тут же и кроется проблема, которая проявляет себя при высокой нагрузке на сервер, или на участках кода критических для выполнения по времени: интерпретатор не обеспечивает достаточной скорости исполнения, поскольку он динамично превращает программный код на языке PHP в код, выполняемый сервером. И поскольку эта проблема проявляется в основном уже тогда, когда проект работает и набирает пользователей, она может иметь для него фатальные последствия.

Оптимизация PHP кода, увеличение мощностей сервера, переход на другой язык программирования

В большинстве случаев, некоторых улучшений можно добиться с помощью оптимизации, но может возникнуть ситуация, когда решение проблемы безапелляционно ограничится производительностью. Временным решением может быть наращивание мощностей серверов, кластеризация и т. п. В таких случаях, перед тем как принимать такие решения, необходимо провести экспертизу, которая позволит установить реальное узкое место системы, потому что проблемой может быть не скорость выполнения кода, а, например, производительность СУБД.

И что же делать, если проблема таки в скорости выполнения PHP? Наращивать мощности серверов? Переписывать десятки или сотни лент кода на другом языке программирования, поддерживающем непосредственной компиляцией в бинарный код? Последнее увеличивает затраты на разработку, отладку и сопровождение в десятки раз.

Решение простое: превращать PHP-код в бинарный код, выполняемый непосредственно центральным процессором. Понятно, что такой нативный код выполняется максимально быстро. То есть, необходим компилятор. Но что делать с кроссплатформенностью? Написание нескольких компиляторов влечёт за собой дополнительные расходы в тысячи человеко-часов. Но существуют и другие варианты.

Промежуточный транслятор HipHop for PHP

Разработчики кода социальной сети Facebook, для которых не могло не возникнуть проблемы производительности из-за такой популярности их продукта, разработали промежуточный транслятор, преобразующий программный код на языке PHP в высокооптимизированный код на языке C++, полностью совместимый с компилятором g++. g++ сейчас существует практически на всех платформах. А уже этот код компилируется в бинарный код для конкретной платформы. Название этого продукта компании Facebook — HipHop for PHP. В 2010 код HipHop for PHP стал доступным как открытое ПО.

Но такое решение, несмотря на максимально возможную производительность, имеет недостаток: код, который может иметь полный контроль над сервером, не согласится разместить у себя ни один хостинг-провайдер. Вам необходимо будет самостоятельно содержать и администрировать свой сервер, в самом дешёвом случае — VDS / VPS.

Виртуальная машина HHVM

Логотип HHVM.
Логотип HHVM.

Ответом на этот вызов стало создание специализированной виртуальной машины HHVM (HipHop Virtual Machine), выполняющий HHBC (HipHop bytecode) подобно тому, как java-машина выполняет байткод. Конечно, скорость работы кода на виртуальной машине будет ниже чем бинарного, но существенно выше, нежели при использовании интерпретатора.

Описание HHVM на GitHub.
Описание HHVM на GitHub.

На данный момент, поддержку HHVM обеспечивают очень малое количество хостинг-провайдеров. Станет ли он стандартом в будущем — неизвестно. Но существование такого решения как HipHop for PHP уже сегодня дает возможность решить проблему производительности относительно малыми затратами.



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

captcha

Новые сайты в каталоге:



Новые отзывы о сайтах:

Авторизация

Если у Вас нет учетной записи, зарегистрируйтесь

captcha

Напомнить пароль
Создание учётной записи

captcha

Напомнить пароль

captcha

Войти в личный кабинет