2015-03-21 2 views
1

Цель Я хотел бы достичьСинхронизация данных через клиентов с ограниченным набором инструментов (без WebSockets, ограниченное количество потоков)

мне нужно реализовать какой-то подписавшись на метод событий. Точнее, люди могут блокировать ячейки в таблицах (больше пользователей могут смотреть одну и ту же таблицу одновременно), и таблицы должны обновляться, когда кто-то блокирует ячейку. (Таким образом, пользователи не пытаются блокировать одну и ту же ячейку несколько раз.) Я считаю, что по крайней мере 45-50 пользователей. (Есть несколько таблиц (на ограниченном числе отдельных веб-страниц, загружаемых с помощью AJAX -. Перенесенного с помощью JSON, который я закодировать на стороне сервера)

Ограничения, ресурсы и идеи

  • У меня нет пропускной способности и дисковое пространство. Доступный серверный диск IO составляет 2 МБ/с, память - 768 МБ (все это доступно).
  • Я должен поддерживать старую версию Chromium (я считаю, 3), которая не поддерживает веб-порты. назад к Long-Polling или любой другой технике.
  • Веб-страница работает на общем хостинге с ограничением 15 PHP-процессов. Это означает, что использование стандартной технологии длительного опроса может поддерживать только 7-8 человек на странице, чего недостаточно для этого проекта.
  • Node.js не доступен для данного хостинг-провайдера.

Я имел следующую идею:

Использования частые работают хроны я могу создавать и записывать строки JSON в файлы - клиенты могут загружать файлы JSon и периодически обновлять таблицу, если есть изменения.

Я знаю, что это звучит не очень элегантно, поэтому я решил спросить, прежде чем реализовать план выше.

Спасибо за любые идеи/помощь, Балинт

+1

Ваш _lock_ больше похож на _subscribe_ или _listen_. Замки обычно являются эксклюзивными (вы блокируете его, чтобы никто не мог), тогда как любое количество клиентов и подписываться/слушать. – Halcyon

+0

Извините, я неправильно описывал проблему. Пользователи могут блокировать определенные ячейки таблицы и подписываться на события других блокирующих ячеек.Я обновляю вопрос с некоторыми исправлениями – molbal

+0

Пожалуйста, укажите частоту обновления, на которую вы стремитесь. Было бы также хорошей мотивацией, если бы ваши читатели знали, зачем вам это нужно? Почему все ограничения, которые кажутся такими произвольными, и что в камерах? Может быть, мне просто интересно, но ваш вопрос странно абстрактен. –

ответ

1

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

Опрос клиентов будет отрицательным для использования полосы пропускания, поэтому вам необходимо будет определить, что вы можете там жить (измерьте пропускную способность, используемую для опроса N клиентов на определенном интервале, и соответствующим образом настройте частоту опроса).

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

+0

Спасибо! Да, я изначально хотел сделать хотя бы длительный опрос, но бюджет проекта достаточно для аренды общего хостинга вместо VPN – molbal

Смежные вопросы