Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > алгоритм обмена сообщениями


Автор: bammm 25.9.2008, 10:52
Здравствуйте
Помогите в алгоритме для следующей задачи
Нужно реализовать обмен сообщениями между зарегистрированными пользователями на php+mysql.
Получил совет создать таблицу msg(id, from_user_id, to_user_id, text, date, parent_msg)
Но я думаю это будет занимать слишком много процессорного времени и ресурсов оперативной памяти даже для того чтобы сформировать список между какими пользователями происходил диалог. Может есть способы пооптимизированнее?
Заранее спасибо

Автор: skyboy 25.9.2008, 12:37
Цитата(bammm @  25.9.2008,  09:52 Найти цитируемый пост)
Но я думаю это будет занимать слишком много процессорного времени и ресурсов оперативной памяти

в смысле? создание таблицы? так ты её должен не при отправке очередного сообщения создавать, а раз создать и пользоваться.
что-то не пойму: либо ты думаешь, что использование БД не рационально и есть другие, более быстрые способы хранения и выборки информации, либо я тебя не понял. 

Автор: bammm 25.9.2008, 13:02
я вот о каких ресурсах говорю:
для того чтобы вывести список с кем общался пользователь c id=5 надо

"select to_user_id from msg where from_user_id=5;"

Возвратит в php длиннющий результат, который надо разобрать на отдельные неповторяющиеся строки и

"select from_user_id from msg where to_user_id=5;"

и опять не менее длинный результат получить и разобрать. Это не ресурсоемко по опер. памяти? И по времени.

Автор: skyboy 25.9.2008, 13:19
Цитата(bammm @  25.9.2008,  12:02 Найти цитируемый пост)
Возвратит в php длиннющий результат, который надо разобрать на отдельные неповторяющиеся строки

(не)повторяемость учитывается в запросе. и реализуется средствами СУБД.
Цитата(bammm @  25.9.2008,  12:02 Найти цитируемый пост)
и разобрать

куда его надо разобрать? пока что я не понимаю твоей логики.

Автор: teroni 25.9.2008, 13:22
Да это простые запросы, ресурсоёмкость не очень большая.. К тому же, ведь если юзер по 1000 сообщений написал уже, то ведь не все их надо показать на текущей странице, а допустим последние 50, и запрос будет с LIMIT 0, 50.

Автор: bammm 25.9.2008, 13:31
skyboy разобрать - в смысле  на неповторяющиеся разбирать. Я думал это мне вручную надо делать )
спасибо

Автор: bammm 26.9.2008, 10:32
подскажите как запрос 
"select to_user_id from msg where from_user_id=5;" сделать таким чтобы он выбирал строки с уникальным to_user_id

Автор: solenko 26.9.2008, 10:52
google-> SQL DISTINCT

Автор: lelik133 26.9.2008, 11:16
или 
Код

group by to_user_id 

Автор: bammm 26.9.2008, 11:48
оо спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)