Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Релиз KPHP и движков

Anna | 29.05.2014 | нет комментариев

Довольно Зачастую, выступая на разных конференциях, мы делились желанием выпустить под открытой лицензией KittenPHP, согласно обычии, заложенной большими IT-компаниями, такими как Google и Facebook.

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

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


Начальные коды были выложены под лицензиями GNU (GPL и LGPL). Данные лицензии близки нам идеологически, так как при создании этих библиотек мы Зачастую применяли инструменты, лицензированные именно GNU.

KPHP

Начальный код ВКонтакте разрабатывается на PHP-сходственном языке, названном KittenPHP либо коротко KPHP. Данный код транслируется в C особым транслятором с одноименным наименованием. Позже этого сгенерированный C код механически компилируется средствами gcc, в итоге чего получается бинарник, готовый для запуска. Данный бинарник представляет собой веб-сервер, принимающий http-запросы и генерирующий страницы.
Для того Дабы ускорить процесс разработки, KPHP компилирует разные файлы плана отдельно, позже чего линкует. При последующих компиляциях обрабатываются только измененные файлы, либо, в случае крупных по размеру файлов, только их части.

KPHP – минималистичный язык, сделанный с целью обеспечить дюже высокую скорость работы, без урона для комфорта и скорости разработки. В связи с этим KPHP поддерживает не все вероятности PHP, в частности, в нем отсутствует ООП, за исключением некоторых объектов стандартной библиотеки. Помимо этого не поддерживается eval и связанные с ним вещи, такие как регулярные выражения с модификатором ‘e’ (взамен этого предлагается применять функцию preg_replace_callback). Также не поддерживаются функции для работы с определенными элементами массивов first, end, next, prev, current, reset, key; для их замены реализованы функции getValueByPos и getKeyByPos.
Отказ от поддержки большого числа функционала дозволил KPHP стать немыслимо стремительным по сопоставлению с другими средствами для веб-разработки.
В качестве примера мы сравнили его с разработанным в Facebook HipHop VM и получили следующие итоги:

Тесты KPHP HHVM PHP
simple 0.000 0.007 0.137
simplecall 0.000 0.004 0.174
simpleucall 0.007 0.008 0.178
simpleudcall 0.007 0.009 0.181
mandel 0.010 0.066 0.392
mandel2 0.011 0.074 0.355
ackermann(7) 0.001 0.011 0.189
ary(50000) 0.003 0.008 0.024
ary2(50000) 0.003 0.010 0.022
ary3(2000) 0.011 0.077 0.191
fibo(30) 0.003 0.019 0.481
hash1(50000) 0.018 0.034 0.044
hash2(500) 0.011 0.021 0.039
heapsort(20000) 0.012 0.040 0.101
matrix(20) 0.007 0.021 0.121
nestedloop(12) 0.000 0.012 0.235
sieve(30) 0.013 0.016 0.114
strcat(200000) 0.002 0.005 0.014
Итоги 0.119 0.442 2.992

Код тестов доступен по ссылке:
gist.github.com/anonymous/9391146#file-bench-php

С точки зрения разработки, KPHP довольно совместим с PHP, Дабы для стремительного тестирования написанного кода дозволено было применять обыкновенный PHP, а компилировать код только перед финальным тестированием и выкатыванием плана. Для поддержки функций, реализованных в KPHP, но отсутствующих в обыкновенном PHP, была выложена особая библиотека github.com/vk-com/kphp-kdb/tree/master/vkext, расширяющая вероятности PHP.

Помимо того, KittenPHP является отличным статическим анализатором PHP-кода, указывающим на возможные ошибки. Скажем, в процессе перевода ВКонтакте на него год назад было обнаружено больше 20 серьезных багов.

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

PMemcached (“Persistent Memcached”)

Верное key-value хранилище, дозволяющее беречь данные без ограничения по времени. По протоколу MC движок работает одинаково Memcache, за исключением того, что позже перезагрузки все данные остаются.
Помимо своих основных функций, при включении соответствующей опции в конфигурации pmemcached разрешает получать сразу группы записей, у которых префикс ключа соответствует заданному в запросе.

Lists

Данный движок разрешает беречь и получать разные списки данных.
Одна копия движка может беречь комплект списков. Всякий список должен иметь идентификатор (int), по которому с этим списком дозволено трудиться.
В всяком списке может быть неограниченное число элементов. Всякий элемент также должен иметь идентификатор (int), значение (int), флаг (int) и может беречь произвольные 256 символов текста.
Помимо приобретения списков есть вероятность получать подсписки, фильтруя по флагам и сортируя по значениям.

Документация: github.com/vk-com/kphp-kdb/blob/master/docs/ru/KittenDB_Lists.wiki

Lists-X

Модификация движка Lists, разрешающая применять ключи и идентификаторы записей, состоящие не из одного числа (int), a из предварительно заданного в конфигурации движка числа чисел (int). Скажем, это разрешает создавать списки, ключ которых формируется из идентификатора пользователя и идентификатора записи на его стене.

Документация: github.com/vk-com/kphp-kdb/blob/master/docs/ru/KittenDB_Lists-X.wiki

Search

Предуготовлен для поиска данных на сайте. Любая текстовая информация может быть проиндексирована в движке с определенным идентификатором, и позднее обнаружена по словам в тексте. В итогах поиска будут возвращены идентификаторы, указанные при индексировании.
Search поддерживает произвольные параметры для поиска по критериям, и особые параметры для разных сортировок.

Источник: programmingmaster.ru

Оставить комментарий
БАЗА ЗНАНИЙ
СЛУЧАЙНАЯ СТАТЬЯ
СЛУЧАЙНЫЙ БЛОГ
СЛУЧАЙНЫЙ МОД
СЛУЧАЙНЫЙ СКИН
НОВЫЕ МОДЫ
НОВЫЕ СКИНЫ
НАКОПЛЕННЫЙ ОПЫТ
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB