Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Демоны на PHP (Денис Глазков)

3,879 views

Published on

  • Dating for everyone is here: ❶❶❶ http://bit.ly/2u6xbL5 ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/2u6xbL5 ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Демоны на PHP (Денис Глазков)

  1. 1. Демоны на PHP Денис Глазков
  2. 2. Основные преимущества использования демонов на PHP• Скорость разработки• Возможность быстро построить модель вашего сервиса• Возможности использования готовых PHP-библиотек в коде демона• «Честное» выделение и чистка памяти
  3. 3. Где лучше применить PHP-демоны• Асинхронные сервисы – Многопользовательские сервисы с мгновенным уведомлением • Real-time многопользовательские игры (flash, websocket) • Чаты. IM-гейты • Сервер flashpolicy – Фронтенд-сервер. Comet-server. Оповещение о событиях.• Синхронные сервисы – Бэкенды. Обработчики. Кэш-сервер со сложной логикой
  4. 4. Отличия libevent от selectlibevent - библиотеки асинхронного неблокирующего ввода/вывода• Работает с механизмами kqueue, epoll, poll, /dev/poll и select(2)• Никаких пробеганий по списку в отличие от socket_select()• Берет на себя организацию буферов на чтение/запись• Удобное API. Работа с callback-ами
  5. 5. Расширение libevent для PHP• libevent.so – PECL-расширение (by Antony Dovgal)• Запись/чтение в буфер – event_buffer_write, event_buffer_read• Работает на callback-ах – события готовности чтения/записи – таймауты• PHPDaemon – Фреймворк на php
  6. 6. Примеры архитектурыс использованием PHP-демонов
  7. 7. Frontend-server
  8. 8. Схема frontend-backend DB Memcache php-backend php-backend php-backend Frontendclient client client client client
  9. 9. Несколькоfrontend-серверов
  10. 10. Несколько фронтенд-серверов DB Memcachebackend backend backend backend backend backend Frontend Frontendclient client client client client client client client
  11. 11. Comet-сервер php php nginx cometclient client client client
  12. 12. Проблема приложений с быстрым откликом SERVER xy xy xy xy xy xy xy xy xy xy xy xy xy xy xy CLIENT-1 CLIENT-2
  13. 13. Проблема приложений с быстрым откликом Посылаем периодически пустые пакеты SERVER xy xy … xy xy xy … xy xy xy … xy xy xy … xy xy xy … xy CLIENT-1 CLIENT-2
  14. 14. Особенности PHP-кодингадля разработки демонов
  15. 15. «Экономия на спичках»
  16. 16. «Экономия на спичках» Конкатенация строк abc . $var "abc $var" sprintf(abc%s, $var)
  17. 17. «Экономия на спичках» Разбиение строки на подстрокиlist($a, $b) = explode(‘|’, $str, 2); sscanf($str, ‘%[^|]|%s’, $a, $b);
  18. 18. «Экономия на спичках» Сравнение строк на вхождение preg_match(‘/^abc/’, $var) substr($var, 0,3) === ‘abc’ strncmp($var, ‘abc’, 3)
  19. 19. «Экономия на спичках»• $a===const • $a==const• if else • switch• function VS • class::method• $a • $longVariable
  20. 20. Чистка мусора
  21. 21. Чистка мусора• Закрываем дескрипторы• Явно чистим замкнутые ссылки• unset()
  22. 22. PHP-демоны• В php имеются полноценные средства для создания асинхронных сервисов с неблокирующими сокетами• Сервисы с несложной логикой работают не намного хуже демонов на Cи• Простота и скорость разработки
  23. 23. ВопросыГлазков ДенисPHP-разработчик компании badooEmail/jabber: denis@corp.badoo.com

×