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 · MAX · VK Play · Snapster · Офис в «Зингере» · SUPA · VK Records · VK Teams · Учи.ру · Nau Engine · Новости (Дзен) · VK Капсула · VK Видео Live · VK WorkSpace · VK Fest

Сообщества

Биология · Ёжик в матане · Книга животных · Ксюня, поясни за литру · Лайфхаки от Нечетова · Объединённые космосом · Популярная наука · Улица Шкловского · Химический портал Alles · Химия — Просто · Юра, мы справимся!

 
Люди

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

Ресурсы

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 и более поздних версий.

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