KPHP

Материал из Циклопедии
Перейти к навигации Перейти к поиску
программное обеспечение
KPHP
Тип

Транслятор PHP в C++

Разработчик

В контакте

Написана на

Си и C++

Последняя версия

47 (9 марта 2024)

Состояние

активное

Лицензия

GNU LGPL и GNU GPL

Сайт

github.com

KPHP (kPHP, KittenPHP) — свободный (GPL/LGPL) транслятор PHP-кода в C++ от компании ВКонтакте. По словам разработчиков, переход социальной сети в конце мая 2013 года на новый язык программирования дал двукратное повышение скорости сервиса[1]. Специальный проект, разработанный для того, чтобы объединить преимущества PHP и языков с статической типизацией, улучшая производительность PHP-приложений. Он предоставляет компилятор для PHP, который позволяет преобразовать PHP-код в C++, что в конечном итоге может привести к значительному ускорению выполнения кода и уменьшению времени отклика серверов[2].

Компания ВКонтакте разработала свободный транслятор PHP-кода в C++, который распространяется под лицензиями GPL и LGPL. По утверждению разработчиков, переход социальной сети на новый язык программирования в конце мая 2013 года обеспечил двукратное увеличение скорости работы сервиса.

6 марта 2014 года код транслятора и связанные с ним инструменты были опубликованы в открытом доступе. Однако проект не обновлялся на GitHub в течение шести лет. 11 ноября 2020 года компилятор KPHP был повторно выложен на той же платформе, но без внутренних баз данных или «движков»[3].

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

Приставка «К-» в названии проекта происходит от термина «kitten» (рус. котёнок), что стало частью традиции внутренних разработок компании ВКонтакте[4].

Основные особенности KPHP[править]

Одним из основных преимуществ KPHP является его способность значительно увеличить производительность за счёт компиляции PHP-кода в нативный код C++. Это позволяет избежать накладных расходов, связанных с интерпретацией кода PHP в реальном времени[4].

KPHP вводит статическую типизацию в мир PHP, что помогает выявлять ошибки на этапе компиляции, а не во время исполнения. Это позволяет разработчикам создавать более надёжный и предсказуемый код[4].

Несмотря на изменения, KPHP стремится поддерживать совместимость с PHP, благодаря чему разработчики могут легко интегрировать его в существующие проекты без необходимости переписывать код[4].

KPHP позволяет более эффективно управлять памятью, что может существенно снизить нагрузку на сервер, особенно при работе с приложениями, использующими большие объёмы данных за счёт оптимизации памяти[4].

Инструменты и поддержка: Сообщество разработчиков активно работает над расширением функциональности KPHP и созданием инструментов, упрощающих разработку и сопровождение проектов[4].

Веб-приложения: KPHP может быть идеальным решением для крупных веб-приложений, где производительность имеет критическое значение.

API-сервисы: Компилированные API могут обрабатывать запросы быстрее, что существенно повышает общую эффективность сервиса.

Микросервисы: При использовании KPHP в архитектуре микросервисов можно добиться высокой производительности и масштабируемости.

KPHP интересный подход к улучшению стандартной работы с PHP. Он сочетает в себе известность и распространённость PHP с преимуществами статической типизации и высокой производительности, что делает его привлекательным выбором для разработчиков, стремящихся оптимизировать свои приложения. Если вы ищете способы улучшить производительность своих PHP-приложений, KPHP стоит рассмотреть в качестве возможного решения.

Преимущества KPHP[править]

Одним из главных факторов, способствующих популярности KPHP, является отмечаемое увеличение скорости выполнения приложений. Это особенно важно для масштабируемых веб-сервисов и высоконагруженных проектов, где время отклика имеет критическое значение[5].

KPHP может помочь оптимизировать использование ресурсов сервера. Поскольку программы, скомпилированные с помощью KPHP, производят меньше накладных расходов на интерпретацию кода, они требуют меньшего объёма оперативной памяти и ресурсов CPU[6].

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

KPHP разрабатывался с акцентом на совместимость с существующими PHP-приложениями. Это позволяет внедрять KPHP в уже работающие проекты, не требуя полного переписывания кода. Разработчики могут постепенно адаптировать приложения под KPHP, изменяя только те части, которые имеют смысл для оптимизации.

Дорабатываем KPHP для работы с MySQL[править]

В настоящее время версия KPHP, размещённая на GitHub, имеет ограничения, касающиеся работы с MySQL на пользовательском хосте, с пользовательским портом, а также с кастомными учётными данными (логином и паролем). После небольшого изучения исходного кода можно понять, что эти ограничения в значительной степени искусственные. Внеся несколько незначительных изменений, можно добиться полноценного функционирования KPHP с MySQL[4].

Драйвер MySQL в KPHP работает несколько иначе, чем в традиционном PHP: соединение с базой данных устанавливается в рамках одного KPHP-воркера и поддерживается в уже установленном состоянии. Это позволяет оптимизировать процесс, так как при каждом обращении к KPHP-приложению не требуется вновь устанавливать соединение с базой — запросы идут сразу через уже открытое соединение. Поэтому аргументы функции mysqli_connect игнорируются. В текущей реализации они жёстко закодированы в компиляторе[4].

Ограничение обходиться путём замены статичных фрагментов кода на переменные, значение которых будет передаваться в качестве параметров-флагов при запуске бинарного приложения. Это позволит сделать подключение к MySQL более гибким и настраиваемым в зависимости от конкретных требований пользователя[4].

Области применения[править]

KPHP особенно подойдёт для разработки высоконагруженных веб-приложений и API, где скорость обработки запросов и стабильность имеют первостепенное значение. Многие популярные CMS, такие как WordPress, могут воспользоваться преимуществами KPHP для повышения производительности, особенно при больших объёмах контента и пользователей[7].

В масштабируемых платформах для электронной коммерции, где требуется быстрая обработка больших объёмов данных, KPHP может существенно повысить производительность и уменьшить время отклика. При разработке архитектуры, основанной на микросервисах, использование KPHP может значительно снизить накладные расходы на выполнение кода и улучшить общее качество обслуживания пользователей[7].

KPHP представляет собой увлекательный проект, который может изменить подход к разработке на PHP. С развитием технологий и возрастанием требований к производительности, данный инструмент становится всё более актуальным для разработчиков, стремящихся к оптимизации своих приложений. Если вы хотите попробовать KPHP в действии, существует множество ресурсов и документации, которые помогут вам начать, а также активное сообщество, готовое поддержать вас в этом начинании[7].

Примечания[править]

 
Сайт
Люди
События

Празднование 1 апреля 2010 года · Звезда ВКонтакте

Другое

FindFace · VK Play · Snapster · Офис в «Зингере» · SUPA · VK Records · VK Teams · Учи.ру · Nau Engine · Новости (Дзен) · VK Капсула · VK Видео Live

 
Люди

Энди Гутманс • Расмус Лердорф • Зеев Сураски

Ресурсы

Zend Engine • Библиотеки • PEAR • Редакторы • Акселератор

Реализации

HipHop • kPHP • Project Zero • Phalanger • Parrot • Quercus

Фреймворки

AppFlower • CakePHP • CodeIgniter • Drupal • FuelPHP • Horde • Joomla! • Lithium • Midgard • MODX • Qcodo • Seagull • SilverStripe • Symfony • TYPO3 • Xaraya • Yii • Zend Framework • Zeta Components

Тестирование

PHPUnit • PHP Unit Testing Framework • SimpleTest

ORM

Propel • Doctrine

IDE

AppFlower • Eclipse PDT • PhpStorm • NetBeans • RadPHP • PHP DevelStudio • PHPEdit • Zend Studio

Компилятор

Phalanger

Widget toolkit

wxPHP • PHP-GTK • PHP-Qt

Категория Категория

 
Главное

Копилефт СПО (Определение Критерии Debian Сообщество Движение) • Gratis versus libre Сравнение хостингов СПО Открытое ПО (Определение) • Определение свободных произведений культуры Список FOSS-пакетов Дистрибутив Linux

История

GNU Linux Mozilla (Application Suite Firefox Thunderbird)

Организации

ASF AOSP Blender Foundation Eclipse Foundation FreeBSD Foundation freedesktop.org FSF FSMI GNOME Foundation Проект GNU Google Code KDE e.V. Linux Foundation Mozilla Foundation OSGF OSI ReactOS Foundation Software Freedom Conservancy SourceForge Symbian Foundation The Document Foundation Xiph.Org XMPP Standards Foundation X.Org Foundation

Лицензии

Apache Artistic Beerware BSD GNU GPL GNU LGPL ISC MIT MPL Ms-PL/RL zlib Public domain / CC0 WTFPL Лицензии, одобренные FSF Пермиссивные лицензии Разнообразие лицензий

Проблемы

Безопасность (англ.) • Блоб Конфликт SCO — Linux Программные патенты DRM Тивоизация Trusted Computing Графическое оборудование и СПО

Прочее

Сообщество Форк Microsoft Open Specification Promise Сравнение open source и закрытых исходников Проприетарное ПО Собор и Базар Ради удовольствия Revolution OSСвободные игры

Знание.Вики

Одним из источников, использованных при создании данной статьи, является статья из википроекта «Знание.Вики» («znanierussia.ru») под названием «KPHP», расположенная по следующим адресам:

Материал указанной статьи полностью или частично использован в Циклопедии по лицензии CC-BY-SA 4.0 и более поздних версий.

Всем участникам Знание.Вики предлагается прочитать материал «Почему Циклопедия?».