Содержание
- 2. Кто мы такие? Вадим Крючков [Long], руководитель группы разработки Андрей Голубев [440hz], ведущий разработчик Евгений Прудников,
- 3. Обычная архитектура (mem)cached
- 4. Наша архитектура — включаем демоны
- 5. Демонизация. Что есть такое libevent? Предоставляет простой механизм для запуска callback функций, при наступлении определенного события
- 6. Пишем демона
- 7. Пишем демона, работающего с сокетом // Создаем сокет - event вешается на дескриптор $rSocket = stream_socket_server
- 8. Пишем демона — подключаем libevent // создаем событийную базу $rBaseEvent = event_base_new ( ); // создаем
- 9. Метод обработки function onAcceptEvent ( $rSocket, $rEvent, $args ) { global $rBaseEvent; // удобнее сделать через
- 10. Метод чтения $iBufferReadLenght = 1024; // размер буфера чтения function onReadEvent($rStream, $args) { global $iBufferReadLenght; $tmp
- 11. Превращаем демона в ... или не документированные возможности
- 12. Таймеры (thnx 440hz) Стандартный таймер libevent'а не работает :( Выход есть! событие можно повесить на «любой»
- 13. Таймеры - решение tmpfile() - открываем новый временный файл «вешаем» на этот дескриптор отложенное событие event_set(
- 14. Демонстрация http://cyberdot.ru/src/socket.phps
- 15. Подводные камни Очень мало информации и примеров Следить за ресурсами, не забываем их освобождать Хитрости при
- 16. Даем нагрузку
- 17. Тестирование ботами Имитируем … пользователей в on-line: Воспользовались API Написали приложение, генерирующее ботов
- 18. Результаты Сервер Xeon 8х2.66GHz, RAM 8Gb: Около 2.5 тысяч запросов в секунду (не Hello, World) На
- 19. Результаты Сервер Xeon 8х2.66GHz, RAM 8Gb: Около 2.5 тысяч запросов в секунду (не Hello, World) На
- 20. Советы Научитесь «мыслить параллельно» Процесс не завершается Чужие данные Читайте исходники — в них много полезного
- 21. Выводы Выводы пока делать рано :)
- 22. Выводы (серьезно) Можно рекомендовать к использованию на продакшене Позволяет держать хорошие нагрузки (при этом оставляя LA
- 24. Скачать презентацию