Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Подгружаемый контент
Форумы портала PHP.SU » PHP » Программирование на PHP » Подгружаемый контент

Страниц (1): [1]
 

1. vanicon - 02 Января, 2012 - 00:23:04 - перейти к сообщению
Здравствуйте!
Есть страница, на которой будут подгружаться записи, то есть на этой странице отображаются записи определенных пользователей, и через 1 мин выполняется запрос к серверу на выдачу новых записей от этих пользователей если таковые записи имеются в БД. Запрос к БД там получается на выборку записей, где дата + 1 мин больше времени сейчас.
Вроде бы всего 1 запрос нагрузки на сервер не так много, но вот если пользователей 500-1000 и подождут минут 10 то это огромное число запросов....
И в голову пришла мысль, что если после опубликование записи каким либо пользователем посылался запрос к другому, и этот запрос означал что есть новая запись от пользователя и можно обновлять записи, что бы попросту не ходить в БД за пустым результатом. Вообщем думаю смысл понятен.
Но вот я не знаю как все можно реализовать, или может есть другой какой способ?
2. caballero - 02 Января, 2012 - 00:27:05 - перейти к сообщению
запрашавить сначала наличие новых записей а потом их загружать если есть
3. vanicon - 02 Января, 2012 - 00:28:25 - перейти к сообщению
Цитата:
запрашавить сначала наличие новых записей а потом их загружать если есть

Ну а какая разница? что делать запрос в БД на их наличие, или же просто их загружать(выводить сразу в не зависимости есть они или нет)
4. Саныч - 02 Января, 2012 - 01:16:42 - перейти к сообщению
vanicon пишет:
после опубликование записи каким либо пользователем посылался запрос к другому
Сама идея уже не правильна, т.к. общение идет пользователь-сервер. Каким образом вы свяжете пользователя с другим пользователем?..

Ну вот давайте немного посчитаем и подумаем. Даже если взять 1000 пользователей, которые висят на странице 10 минут. В итоге получаем 10 тыс. запросов в течении 10 минут, т.е. в среднем где-то 16 - 17 запросов в секунду. Разве это много?) К тому же новые записи не будут появляться каждую минуту и большинство (почти все) запросы будут "пустыми".

caballero пишет:
запрашавить сначала наличие новых записей а потом их загружать если есть
Это уже 2 запроса: узнать есть ли записи, а потом послать еще один на добавление... Смысл? Все деалается в одном.
5. caballero - 02 Января, 2012 - 01:28:26 - перейти к сообщению
Цитата:
Ну а какая разница? что делать запрос в БД на их наличие, или же просто их загружать

Разница в том что select count выполняется гораздо быстрее и передавать нужно одну цифру

Цитата:
Это уже 2 запроса: узнать есть ли записи, а потом послать еще один на добавление

2 - если есть данные
6. tuareg - 02 Января, 2012 - 06:23:19 - перейти к сообщению
Так на вскидку.
таблица: id flag message.
Есть 3 пользователя Вася Петя Саша.
Вася читает посты Пети. Но не читает посты Саши.
Вася в сети.(flag в Бд что он тут).
Заходит Петя и пишет пост.
Пост сохранился, после сохранения
Проверяем всех активных пользователей, которые читают посты Пети(в данном случае Вася) и если Вася активен ставим ему в поле message 1. И через какое-то время посылается запрос, и проверяется поле message. Если там 1 то update message=0 и выдергиваем сообщение.
В худшем варианте будет 3 запроса(если есть новое сообщение) но это не страшно, там сами запросы легкие. все по индексам.
P.S Если в поле message писать id нового поста. то вообще все запросы будут простыми.(если интервал большой, то можно записывать в виде id1,id2)
UPDATE будет что-то типа message=CONCAT(message,id2)
P.S.S То что вы хотите сделать называется COMET вот почитайте http://javascript[dot]ru/ajax/comet

 

Powered by ExBB FM 1.0 RC1