Максим Б.
2206 сообщений
#15 лет назад
Цитата ("Lisio"):
Опять флэш? Как будто кроме него ничего нет )))


А разве есть?
Андрей К.
1172 сообщения
#15 лет назад
Pixorama, ну как бы сказать, чаты появились за годы до появления flash. Демоны появились еще раньше. На flash свет клином не сошелся, это сопутствующая технология и никогда не будет основной при разработках любых проектов любой сложности.
Сергей Б.
49 сообщений
#15 лет назад
Зачем же flash. Как вариант можно написать чат с использованием Silverlight.
Максим Б.
2206 сообщений
#15 лет назад
Цитата ("Lisio"):
Pixorama, ну как бы сказать, чаты появились за годы до появления flash. Демоны появились еще раньше.


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

Цитата ("Lisio"):
На flash свет клином не сошелся, это сопутствующая технология и никогда не будет основной при разработках любых проектов любой сложности.


А по какому критерию определяется, сопутствующая технология или основная? видимо идиоты, не знают что технология сопутствующая и сделали себе сайт полностью на флеше И каждый день выбирают таких же идиотов с сайтами на флеше.
Максим Б.
2206 сообщений
#15 лет назад
Цитата ("SergeyBoiko"):
Зачем же flash. Как вариант можно написать чат с использованием Silverlight.


IMHO, SilverLight как технология заглохнет скорее всего.
Андрей К.
1172 сообщения
#15 лет назад
Определяется это тем, что для поездки на работу БелАз не нужен. Все равно что брать выделенный сервер для сайта-визитки. Сопутствующей она будет как минимум до тех пор, пока браузеры не будут поддерживать flash из коробки. А индексируемость и прочие составляющие таких сайтов вообще под очень большим вопросом.
Роман Беляев
16382 сообщения
#15 лет назад
Народ, вообще это все конкретный оффтоп и холивар. Можно бы и воздержаться от споров на эту тему.
Каждый предлагает то, в чем понимает больше всего и это не удивительно. Один знает один технологии, другой - иные. На то он и форум, чтобы общими усилиями получить результат. А меряться можно в других местах.
Андрей К.
1172 сообщения
#15 лет назад
Так вопрос был конкретный. Как на shared сделать нормальный чат. Flash туда вообще никаким боком не лезет.
Максим Б.
2206 сообщений
#15 лет назад
Цитата ("Lisio"):
Так вопрос был конкретный. Как на shared сделать нормальный чат. Flash туда вообще никаким боком не лезет.


Так я нигде и не писал что мое решение под шаред хостинг. Я написал что это изжившая себя технология, и на что нужно ориентироваться.
Евгений Б.
5330 сообщений
#15 лет назад
Чето Вас всех плющит.. ради чата Flash медиа сервер запускать... наверное для того, что бы поднять ГС на WP мне БД на Oracle сделать тогда?
500 человек - фигня. 1 php скрипт, максимум оптимизации и минимум монстроподобных скриптов по обработке всего. акселератор на себя возьмет основную часть.
Роман Беляев
16382 сообщения
#15 лет назад
ArtPro, от структуры много зависит. Даже просто так отдавать 500 раз в секунду статичный файлик уже не так просто, походу..
какие нибудь 20 кб каждому раз в секунду и уже имеем 80 мегабит потока.
Андрей К.
1172 сообщения
#15 лет назад
frig, gzip вам в помощь.
Роман Беляев
16382 сообщения
#15 лет назад
Lisio, писал я о сжатии несколько раз.
Евгений Б.
5330 сообщений
#15 лет назад
Цитата ("frig"):
какие нибудь 20 кб каждому раз в секунду и уже имеем 80 мегабит потока.

не всем по 20 кило. тут как раз думать надо. да и не пишут все так часто.

я при при записи текста делал бы задержку общую.. т.е. обновлял данные раз в 3 секунды. время не критично (аська по 5 сек тормозит порой)
Роман Беляев
16382 сообщения
#15 лет назад
ArtPro, вообще все это начинает сильно сказываться с ростом количества участников. Думаю, что можно просто при росте количества участников увеличивать интервалы и пускай с натягом, но масштабироваться будет. Рулить этим надо с сервера только.
Артем Л.
11416 сообщений
#15 лет назад
Более менее реализовал алгоритм... Всем спасибо за подсказки.

На данный момент работает так:

Имеем файл с time() последнего сообщения. Файл с 10 последними сообщениями. БД где хранятся все сообщения.

Добавление сообщения:
1. Сохраняем сообщение в базу
2. Делаем выборку последних 10 сообщений из нее
3. Сохраняем в кеш-файл сообщения
4. Меняем в файле time() последнего сообщения...

Загрузка сообщений:
Раз в 2 секунды идут запросы от всех юзерей проверяя файл с time() последнего отправленного сообщения.
Если он больше чем у юзера, то считываем кеш-файл с 10 сообщениями и выводим новые, которых еще нет у юзера.

Только вот беда, сейчас втроем тестили, быстро отправляли 10 сообщений, в чат дошло по 5-6 месаг от каждого, хотя в БД записались все...
Произошло это из-за того что в кеш-файле 10 сообщений. Допустим я увеличу кеш файл до 30 сообщений.
Но все равно это не выход, а если 31 человек в один момент отправит по сообщению, то опять сообщения будут теряться
Увеличивать кеш в зависимости от количества юзерей онлайн?
Даже не знаю что еще придумать... Не хотелось бы на БД всю нагрузку перекладывать
Роман Беляев
16382 сообщения
#15 лет назад
Hungry_Hunter, нафик там вообще эта БД. хранить все в файлах и брать все нужные от последнего обновления.
Артем Л.
11416 сообщений
#15 лет назад
Так это ж какой файл здоровенный получится тогда? Это разве не плохо скажется на нагрузке и скорости?
Роман Беляев
16382 сообщения
#15 лет назад
Hungry_Hunter, ну читал бы хоть, что пишем тебе тут. Не один файл, а по 100 постов в файл, например. Манипулировать номером поста. Файлы эти можно по дате тереть легко, можно архивировать.. что угодно можно, если нужно.
Вадим Т.
3240 сообщений
#15 лет назад
Цитата ("Hungry_Hunter"):
Пишу небольшой чат. Посещаемость до 500 человек онлайн, шаред хостинг. Если нарастет больше то естественно буду думать о сервере.
Пока вопрос такой: как лучше оптимизировать нагрузки?
Используем PHP, mysql, jquery, json.
Демонов и memcached использовать возможности нет.

Общими усилиями пришли к такому алгоритму:

Раз в 2 секунды идут запросы от всех юзерей проверяя есть ли новые сообщения.

500 человек онлайн, это минимум 500 коннекшенов, пусть даже и с keep alive. Даже если обновлять чат каждые 2 секунды, получается 250 реквестов в секунду. Это даже для выделенного сервера нагрузка, с которой уже можно считаться, а для шаред хостинга, а у Вас он скорее всего отечественный (или я ошибаюсь?), это будет тяжеловато. Даже если будет лишь 200 человек онлайн, то и эти 100 запросов в секунду будут бременем для шаред хостинга. Не то чтобы они не могут это обеспечить, могут конечно, но... такие клиенты с такими проектами им банально невыгодны, и долго такой хостер Вас терпеть не будет за 2-3 USD в месяц (или я не знаю сколько Вы платите, вряд ли шаред хостинг стоит больше). Ведь несколько таких тяжелых случаев, и все, хост забит наглухо, а так можно было бы пару тысяч хомячков на хосте разместить, и заработать на пару порядков больше денег. В общем, думаю, мысль понятна? Пока потихоньку играетесь, и еще не запустились, Вас терпят, потом, когда количество онлайн пользователей дойдет где-то до сотни, а то и раньше, неизбежно перестанут терпеть, и это нормально.

Что я бы советовал, если хотите сами велосипед делать? Снять недорогой VPS (20 USD в месяц максимум, можно и дешевле найти), поставить или демона с сокет-сервером, или кометное решение, и т.д. что угодно, что нужно для полноценного нормального чата. Даже если у Вас лишь 50 онлайн-пользователей, все равно это имеет смысл сделать.

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

Далее, по Вашей задаче. Если все плохо, и хотите лишь Ваше решение именно на дешевом шаред хостинге, и ничто больше, то сходу не могу посоветовать. Как минимум нужно знать что это за шаред хостинг, что он предоставляет еще помимо PHP, что в phpinfo, и т.д. Мало ли, может быть все же можно комет-сервер запустить, или как-то хитро, например из крона, демона запускать, или может быть есть возможность хотя бы работать с shared memory, а может быть скрипт какого-либо чата уже установлен на Вашем хостинге (например в качестве компонента панели, мало ли там что наинсталено), и т.д. Но вообще это тупиковый путь для данной задачи IMHO.