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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подгружаемый контент

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
vanicon
Отправлено: 02 Января, 2012 - 00:23:04
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Здравствуйте!
Есть страница, на которой будут подгружаться записи, то есть на этой странице отображаются записи определенных пользователей, и через 1 мин выполняется запрос к серверу на выдачу новых записей от этих пользователей если таковые записи имеются в БД. Запрос к БД там получается на выборку записей, где дата + 1 мин больше времени сейчас.
Вроде бы всего 1 запрос нагрузки на сервер не так много, но вот если пользователей 500-1000 и подождут минут 10 то это огромное число запросов....
И в голову пришла мысль, что если после опубликование записи каким либо пользователем посылался запрос к другому, и этот запрос означал что есть новая запись от пользователя и можно обновлять записи, что бы попросту не ходить в БД за пустым результатом. Вообщем думаю смысл понятен.
Но вот я не знаю как все можно реализовать, или может есть другой какой способ?


-----
Так было, так есть и так будет
 
 Top
caballero
Отправлено: 02 Января, 2012 - 00:27:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




запрашавить сначала наличие новых записей а потом их загружать если есть


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
vanicon
Отправлено: 02 Января, 2012 - 00:28:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Цитата:
запрашавить сначала наличие новых записей а потом их загружать если есть

Ну а какая разница? что делать запрос в БД на их наличие, или же просто их загружать(выводить сразу в не зависимости есть они или нет)


-----
Так было, так есть и так будет
 
 Top
Саныч Модератор
Отправлено: 02 Января, 2012 - 01:16:42
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




vanicon пишет:
после опубликование записи каким либо пользователем посылался запрос к другому
Сама идея уже не правильна, т.к. общение идет пользователь-сервер. Каким образом вы свяжете пользователя с другим пользователем?..

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

caballero пишет:
запрашавить сначала наличие новых записей а потом их загружать если есть
Это уже 2 запроса: узнать есть ли записи, а потом послать еще один на добавление... Смысл? Все деалается в одном.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
caballero
Отправлено: 02 Января, 2012 - 01:28:26
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Ну а какая разница? что делать запрос в БД на их наличие, или же просто их загружать

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

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

2 - если есть данные


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
tuareg
Отправлено: 02 Января, 2012 - 06:23:19
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Так на вскидку.
таблица: 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
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB