Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

WebDemon [обсуждение] (Александр Михалицын)
Author Message
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 83
   поощрить/наказать


PostPosted: Fri Apr 03, 2009 9:32 am ()
   Post subject:
Reply with quote


М

Выделено из темы «WebDemon -- библиотека для облегчения непрерывной подгрузки данных»,
расположенной в форуме Склад готовых решений :: JavaScript (03 Апреля 2009, 12:32).
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 83
   поощрить/наказать


PostPosted: Fri Apr 03, 2009 9:32 am (спустя 1 секунду; написано за 34 секунды)
   Post subject:
Reply with quote

[+]
Вчера с тобой тестили, суперская вещь. :) Хочу чат на основе этого написать (продвинутый).
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 83
   поощрить/наказать


PostPosted: Fri Apr 03, 2009 9:45 am (спустя 13 минут; написано за 33 секунды)
   Post subject:
Reply with quote

Кстати, насчет урл бакенда ты не прав, может и на другом домене, у тебя же там айфрэйм... А посмотри вон скока вирей на айфрэймах с левых доменов грузят. ;)
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Fri Apr 03, 2009 10:12 am (спустя 27 минут; написано за )
   Post subject:
Reply with quote

Возможно
Back to top
View user's profile Send private message Send e-mail
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Fri Apr 03, 2009 4:24 pm (спустя 6 часов 11 минут; написано за 5 минут 8 секунд)
   Post subject:
Reply with quote

Я уже было подумал что выдумали решение подходящее для нашего чата. Ан нет, оно 100% идентично тому, что у нас в чате и так есть - держать php процесс бесконечно долго.
Юрий Насретдинов, лично мне показалось (в т.ч. и на основе анализа статистики), что такой подход череват размножением httpd процессов (если php как модуль) и утечнами памяти (пока нормально сборка мусора в php не реализована, как минимум до релиза 6-ки). Вот я и ищу методы как от такой беды избавиться, но пока не особо успешно.

п.с. а можно подробнее о том, почему такой подход не будет работать когда Apache работает через nginx reverse proxy? Потому что именно это я и собираюсь сделать в ближайшее время для оптимизации отдачи статики.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Fri Apr 03, 2009 9:27 pm (спустя 5 часов 3 минуты; написано за 4 минуты 2 секунды)
   Post subject:
Reply with quote

dimagolov wrote:
лично мне показалось (в т.ч. и на основе анализа статистики), что такой подход череват размножением httpd процессов (если php как модуль) и утечнами памяти (пока нормально сборка мусора в php не реализована, как минимум до релиза 6-ки). Вот я и ищу методы как от такой беды избавиться, но пока не особо успешно.
Да, текущая реализация backend'а именно такой способ по умолчанию и предлагает (поскольку он очень прост в реализации), но есть и другие варианты, к примеру по принципу nginx, когда все запросы обрабатываются одним потоком. Это можно делать с помощью чистого PHP, написав с использованием сокетов демона, который бы слушал запросы на определенном порту и обслуживал запросы клиентов. Я, наверное, приведу пример, как такое реализовать (через некоторое время).
dimagolov wrote:
а можно подробнее о том, почему такой подход не будет работать когда Apache работает через nginx reverse proxy?
Возможно, оно будет работать, но в моем понимании nginx будет ждать окончания выполнения запроса, а потом выдаст весь ответ апача сразу клиенту. Поскольку WebDemon на то и демон, что будет «висеть» очень долго, то клиент ничего не увидит.

Утечек памяти быть не должно, по крайней мере она не особо сильно должна течь, если backend чата грамотно написан.
Back to top
View user's profile Send private message Send e-mail
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Fri Apr 03, 2009 10:01 pm (спустя 33 минуты; написано за 9 минут 7 секунд)
   Post subject:
Reply with quote

Юрий Насретдинов wrote:
Утечек памяти быть не должно, по крайней мере она не особо сильно должна течь, если backend чата грамотно написан.
Скажем так. Создание и освобождение объектов в PHP5 гарантированно приводит к утечкам памяти. Это не существенно обычно, но если скрипт висит часами, то становится существенным.

Поэтому и идея писать демон тоже не очень улыбается. Писать на сях не особо тянет, а на PHP те же яйца, разве что избавимся от httpd.

Я бы вообще отказался от идеи демона и пользовал бы FastCGI, но это опять таки не PHP. Получается, что использование xcache (для оптимизации загрузки и интерпритации php скрипта back-end) + обычный ajax с обновлением раз в 5-10 секунд должен рулить c точки зрения нагрузки. Да и демон ведь не будет следить за обновлениями непрерывно, ему надо спать давать. Правда, при наличии того же memcache как источника обновлений можно его дергать по идее чаще, чем ajax, на вскидку раз в 2-3 сек.
Интересно было бы сделать тесты, как соотносятся потребление памяти/проца при подходе демона и ajax-а. Только не особо представляю как смоделировать равноценные условия для такого теста.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sat Apr 04, 2009 12:50 am (спустя 2 часа 49 минут; написано за 3 минуты 12 секунд)
   Post subject:
Reply with quote

dimagolov wrote:
Писать на сях не особо тянет, а на PHP те же яйца, разве что избавимся от httpd.
Ты можешь написать демон, который не будет делать fork() для каждого клиента. Тогда избавишься и от лишних httpd и от лишних процессов вообще. А сам демон можно кроном перезапускать каждые 3 часа, к примеру, если он сильно течет.

Такую систему я сейчас и тестирую на примере чата (а именно, PHP-демон). В top показывает загрузку процессора -- 0,00%, памяти -- 16 мегабайт (на 3х клиентов, хотя количество памяти очень слабо зависит от количества клиентов, я думаю, что на 1000 клиентов будет порядка 50 Мб от силы).
Back to top
View user's profile Send private message Send e-mail
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Sat Apr 04, 2009 2:05 am (спустя 1 час 14 минут; написано за 3 минуты 32 секунды)
   Post subject:
Reply with quote

Юрий Насретдинов wrote:
Ты можешь написать демон, который не будет делать fork() для каждого клиента.
Кстати да, хорошая идея.
Back to top
View user's profile Send private message
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 83
   поощрить/наказать


PostPosted: Sat Apr 04, 2009 8:20 am (спустя 6 часов 14 минут; написано за 29 секунд)
   Post subject:
Reply with quote

Нвдежность этой штуковины на высоте -- я профлудил чат циклом:
Code (JavaScript): скопировать код в буфер обмена
javascript:for (var i = 0; i < 1000; i++)  {     var el = document.getElementById('msg');     el.value = 'xaxaxaxa';     send_msg()}
Ничего не упало... 999 итераций :)
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sat Apr 04, 2009 11:35 am (спустя 3 часа 15 минут; написано за 44 секунды)
   Post subject:
Reply with quote

Для разнообразия ещё повесил небольшого бота. Бот очень приветливый, но не любит, когда матерятся и когда пытаются обозвать его ботом.
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Thu Apr 09, 2009 3:23 pm (спустя 5 дней 3 часа 47 минут; написано за 2 минуты 38 секунд)
   Post subject:
Reply with quote

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

Я выложил новую версию библиотеки, в которой содержится пример демона чата на PHP, который привязан к домену ajax.datapoliten.ru, расположенном на другом IP, чем основной сайт -- datapoliten.ru. Пример основан на том демоне чата, который запущен на онлайн-демо.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML