server-push, сервер.

silvek

Новичок
server-push, сервер.

Мне не понятно, как реализовать эффективным образом SP на серверной стороне.

SP - это все два подхода:
1) Долгое опрашивание сервера, когда соединение держится до первого события на сервере, либо по таймауту.
2) Соединение держится по таймауту, при этом получая все события.

Если представить, что 1000 пользователей держат соединение, то Apache такое не выдержит. Даже если настроить его на 1000 потоков, что если придет 1001?

Какое существует решение для поддержки SP в настоящее время?
 

Wicked

Новичок
мне кажется, это лучше делать отдельным мультиплексирующим демоном, но там свои сложности: например, жёсткие требования к блокирующим операциям (работа с файлами, работа с бд, просто тяжелые вычисления). Идеальная сфера применения для них - чаты (да и вообще всякий messaging), мемкэшеподобные хранилища, ...

-~{}~ 26.06.09 11:51:

http://code.google.com/p/phpsocketdaemon/ - немного более выскоуровневый инструмент, чтобы не париться с голыми сокетами.
 

silvek

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

Может быть будет жизнеспособна идея такого рода: демон пишется для накопления соединений и опрашивает в цикле мемкеш на предмет флага события.
Как только событие появилось - запускается интерпретатор php, который выполняет сценарий обработки события.
Этакая система прерываний.

Какие мнения?

-~{}~ 26.06.09 09:52:

Кстати, демона наверное выгоднее писать на си?
 

Wicked

Новичок
может в целом опишешь задачу, которую тебе нужно решать? кто эти клиенты? что за события? как эти события возникают? что нужно сделать для их обработки?

Верно, но писать самому такой демон как-то дороговато выйдет, да и будет он очень узконаправленным.
каким напишешь, таким он и будет.

Может быть будет жизнеспособна идея такого рода: демон пишется для накопления соединений и опрашивает в цикле мемкеш на предмет флага события.
а не может тот, кто собирается добавлять события в мемкэш, вместо мемкэша посылать их этому же демону?

Alexandre
и явно не на РНР
для proof of concept и PHP более чем достаточно
лично я за день осилю написать демон на ПХП гораздо стабильнее и поддерживаемее в дальнейшем, чем за неделю на С/С++
 

silvek

Новичок
Wicked
Какие события могут возникать - новое сообщение в форуме или твиттере, новая ставка на аукционе, новая котировка валюты.

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

Хочется без потери гибкости PHP иметь возможность накапливать клиентов без особых ограничений(1000, 2000 одновременных соединений), т.е. возможность обрабатывать события на php, формировать ответ клиенту на php и т.п.
 

Wicked

Новичок
ты не ответил, что ты собираешься с этими событиями делать.

если под "потерей гибкости" ты подразумеваешь, что тебе нужен запуск пхп-скриптов таким же образом, как их запускает веб-сервер... теоретически, можно сделать так, чтобы этот же мультиплексирующий демон стал веб-сервером и дёргал пхп, например, по fastcgi. Но это задача из ряда написания веб-сервера, которую потянет далеко не каждый.

и я правильно понимаю, что никакой конкретной задачи у тебя нету? я не очень понимаю, зачем тут намешаны твиттеры, ставки на аукционе, котировки валют, ходы игроков и что угодно. Если хочешь более конкретных ответов, будь добр, опиши задачу более полно.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
>Какое существует решение для поддержки SP в настоящее время?
Индивидуальное под задачу
 

Wicked

Новичок
ну в интро-доке к phpsocketdaemon и написано, что одно из его предназначений - comet
 

Alexandre

PHPПенсионер
для proof of concept и PHP более чем достаточно
а расход памяти и куча всяких утечек??? не учитываешь? Лучше потратить неделю и сделать качественный продукт, чем потратить день, а потом расхлебыватьстарые грехп, когда нагрузка возрастет.

да и как говорится - глаза боятся, а руки делают. Мне пришлось писать демон где-то неделю - и до сих пор работает под нормальной нагрузкой.... С неперпеньем жду еще большего прихода посетителей (что-то не идут - видно все в отпуске)

-~{}~ 26.06.09 23:57:

Хочется без потери гибкости PHP иметь возможность накапливать клиентов без особых ограничений(1000, 2000 одновременных соединений), т.е. возможность обрабатывать события на php, формировать ответ клиенту на php и
не надо держать эти соединения - скинул событие в очередь и забыл про него....
а стороне обработчике событий - читаем из очереди и обрабатываем событие :)
 

cDLEON

Онанист РНРСlub
а расход памяти и куча всяких утечек???
Каких это утечек??? У меня ПХП-сокет-демон неделями работал.
Гони не на него - на свои руки. ПХП, ведь - не СИ++, там нет такого модного сборщика мусора....Пока нет....

-~{}~ 27.06.09 03:21:

По топику - если опыта в ПХП мало, то мой тебе совет - пиши на плюсах. Если мало опыта в плюсах, пиши на плюсах, но с использыванием какого-нибудь хорошего фреймворка - вроде Qt
Иначе - в случае с пхп - начнёшь натыкаться на грабли, на которые я натыкался около полугода, пока не понял в чём "фича"
 

cDLEON

Онанист РНРСlub
Основная проблема всех утечек - это не закрытые дескрипторы на ПХПшные ресурсы. Будь то fclose, xml_parser_free и проч. - я то из-за своей наивности думал - что ПыхПых полностью высвобождает память тогда (включая сами ресурсы) когда на эти самые ресурсы пропадает последняя ссылка - а НННЕЕЕЕТ!!!! Ссылка на ресурс пропадает, а ресурс остаётся жить своей жизнью занимая память....
 

Krishna

Продался Java
там нет такого модного сборщика мусора....Пока нет
осталась пара недель, вроде :)

+1 :)

-~{}~ 27.06.09 04:25:

Лучше потратить неделю и сделать качественный продукт, чем потратить день, а потом расхлебыватьстарые грехп, когда нагрузка возрастет.
Читать как: потратить неделю, чтобы потом понять, что требования изменились и потратить ещё неделю, чтобы потом понять, что нужен отдельный программист, знающий си для дальнейшего развития...

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

Wicked

Новичок
cDLEON
у меня обычно другая проблема - циклические ссылки, но и это обычно решается. Но аналог питоновского weakref все равно было бы приятно иметь :)
 

zerkms

TDD infected
Команда форума
осталась пара недель, вроде
30 июня, вторник. по роадмапу.

а расход памяти и куча всяких утечек??? не учитываешь? Лучше потратить неделю и сделать качественный продукт, чем потратить день, а потом расхлебыватьстарые грехп, когда нагрузка возрастет.
http://en.wikipedia.org/wiki/Proof_of_concept
 

Sherman

Mephi
Есть еще один минус, у php есть только select, а например к epoll/kqueue доступа нету.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Sherman
а сколько одновременных соединений ты хочешь обрабатывать на PHP?
 
Сверху