Всем привет! Есть чат. Написан на php+mysql+ajax Но вот скорость работы не устраивает ((( Знаю некоторые чаты работают на основе сокетов. С чего начать, что посоветуете ? P.S. пожалуйста по сути, ответы по типу "гугли" прошу не оставлять! Заранее благодарен.
Я бы посоветовал забыть чаты на сокетах - этот приём "из другого мира", не HTTP-шного. И написать свой чат - используя возможности JavaScript - причём AJAX реализовывать не на основе jQuery - а используя старый добрый DOM 2. Обновляете один из фреймов с какой-то периодичностью, вылавливая новые сообщения - и средствами DOM 2 записываешь их в окно сообщений. И тут, кстати, нужно не забывать чистить таблицу сообщений. Может, кстати, она и тормозила, забитая сообщениями.
bitrop http не подразумевает иной системы кроме как запрос-ответ... к сожалению. если бы был способ с сервера обращаться к клиенту по собственной инициативе - было бы проще жить конечно =)
Ну оно то да... ну надо ж выходить из того, что есть.... вот чат на сокетах даже если сделать , проблемы с поиском хостинга, в итоге можно найти но дорого.... а по поводу чистить базу сообщений, так я имел ввиду скорость работы не самой базы или сервака, а что обновляю окно аяксом каждых 4 секунды.... тобишь если отправляешь месагу на первой секунде , то в итоге ждем 3.... 1 секунду же не поставишь, сервак с ума сойдет....да и хостеры пошлют... Да и вообще на основе ajax оно потянет много клиентов ? ну допустим 100....мне кажется врятли (
Смотря как вытягивать/сохранять новые сообщения средствами php. ajax тут ни при чём. 100 запросов в четые секунды не должны напрягать сервер, да и в 1 секунду.
да как как...обычно.... проверяется наличие новых месаг...как только появляется сразу ajax ом добавляется в конец окна вывода... аякс не при чем это понятно, я в общем имел ввиду ...что не на сокетах, а на phph+mysql+ajax ну что бы не писать связку полностью.....а что там пхп и мускл то само собой
Писал на файлах, бд только для регистрации/входа/получения инфы. Люди пишут сообщения реже, чем нужно обновлять экран. Следовательно, нужно в момент отправки "приготовить" новые сообщения для конкретного юзера, чтобы он максимально быстро их считал. У каждого юзера свой файл из приходящих сообщений. Браузер запросил новые сообщения, получает их быстро, потом unlink файла или затирание. Считываение и выдача сообщений занимает где-то 0.0002-0.0004 секунды. Unlink не знаю, сколько, не проверял, чуть подольше. Если подключаться к бд то будет прибавляться "лишние" 0.0030 секунды. PS. Причем эти 0.0030-0.0050 только на подключение. Сколько займет поиск новых сообщений, зависит от количества записей.
Тогда я сниму шляпу перед Вам -- потому что на данный момент думаю, что это в принципе невозможно. Потому что, как отмечалось ранее, сервер может послать сообщение клиенту только в ответ на запрос этого клиента - после чего сокет ЗАКРЫВАЕТСЯ. Это Вы ждёте свою мессагу 3 секунды. Остальные ждут меньше. Всё зависит от того, как Вы реализуете AJAX. Это же не технология - это концепция. P.S. А что, у Вас такой оживлённый чат?
Проблема решается элементарно. Пишется CGI Initor, который обращается к демону (в свою очередь тоже вполне может быть cgi). Демон ессно, существует в 1 экземпляре и содержит в себе менеджер сокетов. Остальное - дело техники. Так как демон - это не php-скрипт, а C/C++, к примеру, то он может поддерживать сокеты живыми столько, сколько от него требуется. А сам CGI Initor использовать в прямом вызове из php, передавая через параметры всю нужную информацию для управления демоном или своим сокетом. Вуаля, у вас есть статические сокеты под php.
bitrop тобишь если отправляешь месагу на первой секунде , то в итоге ждем 3.... ты доработай скрипт, чтобы при отправке мессаги, он сразу и заберал в ответе новые сообщения =) или ну поставь две секунды...
Ну вот я загрузил страницу чата - и, положим, сокет остался. Но как этот сокет заставит обновиться страницу в браузере - вот что мне непонятно. Браузер же получил ответ на свой запрос и больше ничего не ждёт.
Мозилла, значит, начиная с 4-й версии поддерживает. Неудивительно, что я упустил это новшество... Тут я по граблям не ходил, одно уверенно скажу: с использованием WebSocket нужно подождать хотя бы полгодика. Пусть все обновятся.
Проблема с долгосрочным внедрением ВебСокет куда более серьезная. Из-за уязвимости в системе безопасности производители браузеров отказались от их полной поддержки, пока уязвимость не будет устранена. В случае чата ВС вполне можно использовать - даже если кому-то подменят мессагу, я не думаю, что вас кто-либо засудит. Подавляющее большинство пользователей чатов - это розовые девочки, а сознательные граждане деловые переговоры там не ведут.
bitrop есть способы эмулировать все это дело. вопрос в чем? 4 секунды много? поставь 1 =) че ты мучаешься?