html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Facebook и «Вконтакте» ускоряют PHP, у русских получается лучше

И Facebook, и «Вконтакте» усиленно трудятся над оптимизацией PHP, чтобы ускорить работу своих сайтов. К счастью, воспользоваться результатами их труда могут все желающие, поскольку компании выкладывают результаты в свободное пользование.

Facebook еще в 2010 году выпустил компилятор HipHop (HPHPc). Он транслировал PHP в C++, жертвуя некоторыми редко используемыми функциями PHP вроде eval(), но повышая производительность. Компания «Вконтакте» использует такой же подход. Спустя три года после Facebook она тоже выпустила свою версию транслятора под названием KittenPHP (KPHP), которая по результатам тестирования значительно обогнала HipHop.

Впрочем, вскоре последовал ответ Facebook. Вместо старого транслятора вышла виртуальная машина, окружение и JIT-компилятор для PHP под названием HipHop VM for PHP или просто HHVM. В 2013 году на Github выложили исходный код виртуальной машины и собранные пакеты для Ubuntu 12.04, Debian 7 (wheezy) и Centos 6.4. Сейчас к ним добавился Mint 16.

По словам представителя Facebook, который выступал на конференции O'Reilly Open Source Conference (OSCON), для стандартного веб-сайта, например, на хостинге Wordpress, повышение производительности будет небольшим: всего в пять раз. Другое дело, если речь идет о большой кодовой базе PHP, именно для такой оптимизирована виртуальная машина HHVM, так что здесь возможен рост производительности в девять раз.

«Вконтакте» созрел для публикации исходников только к марту 2014 года, но это наконец-то свершилось. Да еще как! По результатам тестов, новая версия KPHP превосходит стандартный PHP в 25 раз, а «фейсбуковский» HHVM почти вчетверо. Код тестов доступен по ссылке https://gist.github.com/anonymous/9391146#file-bench-php.

Вчера в официальном блоге компания «Вконтакте» рассказала о внутреннем устройстве «ВКонтакте» и тех инструментах, которые теперь стали доступны opensource-сообществу.

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 стать невероятно быстрым по сравнению с другими средствами для веб-разработки.

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

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

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

Кроме перечисленных, Вы можете найти в репозитории ряд других, не столь универсальных, но не менее интересных инструментов, документацию к которым вы найдете здесь: https://github.com/vk-com/kphp-kdb/blob/master/docs/ru/.

Читать дальше
Twitter
Одноклассники
Мой Мир

материал с xakep.ru

  • AbsorbeR
    Только вот почему-то ВК адовый тормоз.
152
    +134 surfers

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • XakepVideo
          • facebook
          • вконтакте
          • домен xakep.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции