long polling php

uid

Новичок
Собственно, всегда считал, что реализация long polling на php из-за отсутствия true fastcgi искаропке просто нецелесообразна из-за высокой нагрузки и отжираемой рамы. Но сейчас ВНЕЗАПНО увидел, что всеми любимый вконтактик, написаный на php, использует эту технологию(см. скрин). Как им это удалось? По одному висящему в памяти интерпретатору на каждую открытую вкладку с сообщениями у каждого юзера онлайн - это жестоко, ни один суперкомпьютер не справится.

Вопрос: как они реализовали long polling? Есть мысли?
 

Вложения

uid

Новичок
grigori
Я сначала так и подумал, но там на сервер отсылается несколько доп. параметров постом, которые push_module для nginx вроде как не умеет обрабатывать.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а кто сказал, что там стандартный push_module и что vk не написал свой? и да - почему там не быть backend-у на python/erlang/C/Java?
 

MiksIr

miksir@home:~$
Да и success story на phpdaemon вроде есть, хотя в масштабах vk дешевле написать и на C
 

uid

Новичок
Может, есть какое-нибудь "коробочное" решение? Например, скрипт отправки лс после успешной записи в базу шлет на какой-то сервис данные о нем, а этот сервис уже раздает полученные данные юзерам?
 

fixxxer

К.О.
Партнер клуба
Предлагаю погуглить по комбинации слов websockets amqp
 

uid

Новичок
fixxxer
Вебсокеты некоторые старые браузеры не поддерживают. Кстати, если бы существовал такой вот универсальный comet-сервер с api для других яп и с graceful degradation(нет вебсокетов - юзаем флеш, нет флеша - через лонг поллинг) - было бы вообще замечательно.
 

fixxxer

К.О.
Партнер клуба
http://caniuse.com/websockets



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

cDLEON

Онанист РНРСlub
socket.io (хотя мне кусок их реализации не совсем нравится), но там есть куча всевозможных транспортных протоколов - в том числе и WebSocket.
Серверная сторона - отдельный вопрос. Я предпочитаю писать такие вещи на Python. Там решений из коробки навалом. Правда, качество тоже немного хромает.
 

fixxxer

К.О.
Партнер клуба
На С совершенно не обязательно. На чем угодно, где есть биндинги на libevent или подобное :)

Обнаружил, кстати, на днях оживший (и, похоже, почти целиком переписанный) http://pecl.php.net/event - занятненько: в отличие от pecl/libevent, достаточно высокоуровневое объектное api.
 

tony2001

TeaM PHPClub
На С совершенно не обязательно. На чем угодно, где есть биндинги на libevent или подобное :)

Обнаружил, кстати, на днях оживший (и, похоже, почти целиком переписанный) http://pecl.php.net/event - занятненько: в отличие от pecl/libevent, достаточно высокоуровневое объектное api.
Ага.
Причем, там автора зовут Ruslan Osmanov, что как-бы намекает, что он не спроста взял и всё заново переписал =)
 
Сверху