С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/27: Рейтинг темы: голосов - 27, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 25.09.2008
Сообщений: 5

алгоритм обмена сообщениями

25.09.2008, 11:43. Показов 5742. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
Помогите в алгоритме для следующей задачи
Нужно реализовать обмен сообщениями между зарегистрированными пользователями на php+mysql.
Получил совет создать таблицу msg(id, from_user_id, to_user_id, text, date, parent_msg)
Но я думаю это будет занимать слишком много процессорного времени и ресурсов оперативной памяти даже для того чтобы сформировать список между какими пользователями происходил диалог. Может есть способы пооптимизированнее?
Заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2008, 11:43
Ответы с готовыми решениями:

Скрипт обмена сообщениями
Всем привет)никак не могу найти урок или скрипт для реализации обмена сообщениями на сайте, как например вконтакте или facebook. Кто...

Решение для обмена сообщениями внутри сайта
Доброго времени суток. Требуется найти решение для организации обмена сообщениями между пользователями сайта (должно иметь API для...

Обмен личными сообщениями
кто может подкинуть код обмена личными сообщениями между пользователями

11
Гость-1000
25.09.2008, 14:34
Тебе типа чата нужно? или как форум, чтобы это работало?(я имею ввиду скорость обмена сообщениями у пользователей) всё зависит от колличества пользователей, и частоты написания сообщений...
на колличествах пользователей до 100, я думаю что таблица которую тебе посоветовали будет оптимальным вариантом(можно ещё XML документ использовать, с теми же полями, он при небольшом кол-ве сообщений будет меньше чем БД кушать), по соотношению сложность/эффективность... даже если обмен сообщениям идёт на скорости чата (только надо будет чистить эту таблицу периодически, определить время хранения сообщения, чтобы она не расползалась до слишком больших значений...)
0 / 0 / 0
Регистрация: 25.09.2008
Сообщений: 5
26.09.2008, 11:34  [ТС]
подскажите как запрос
"select to_user_id from msg where from_user_id=5;" сделать таким чтобы он выбирал строки с уникальным to_user_id
0
 Аватар для iPIPka
39 / 39 / 5
Регистрация: 06.02.2011
Сообщений: 123
06.02.2011, 21:19
SELECT DISTINCT to_user_id FROM msg WHERE from_user_id=5;
это имелось в виду?
А у меня вопрос есть
Т. к. одно сообщение относится к 2 пользователям (у одного - исходящее, у другого - входящее), то как реализовать удаление?

Добавлено через 31 минуту
Все, разобралась, вопрос отменяется :-)
0
 Аватар для evgentus
26 / 18 / 1
Регистрация: 05.02.2011
Сообщений: 55
06.02.2011, 21:28
Цитата Сообщение от iPIPka Посмотреть сообщение
SELECT DISTINCT to_user_id FROM msg WHERE from_user_id=5;
это имелось в виду?
А у меня вопрос есть
Т. к. одно сообщение относится к 2 пользователям (у одного - исходящее, у другого - входящее), то как реализовать удаление?

Добавлено через 31 минуту
Все, разобралась, вопрос отменяется :-)
Внести еще 2 поля что то типа delete_from и delete_to, и если пользователь удаляет у себя сообщение допустим из входящих проверять не удалил ли другой юзер у себя это сообщение из исходящих(если удалил delete_from будет 0)... И в зависимости удалил или нет, либо ставить значение 0, или удалять запись.
Так сделали?
0
 Аватар для iPIPka
39 / 39 / 5
Регистрация: 06.02.2011
Сообщений: 123
06.02.2011, 21:44
Ага, так! Спасибо.
Вот думаю только, наверное триггер надо написать. Только вот не знаю какой.
Видимо, AFTER UPDATE, но насколько это рационально, сначала обновить запись, а потом удалить ее?
0
126 / 93 / 18
Регистрация: 09.01.2011
Сообщений: 467
07.02.2011, 00:14
Цитата Сообщение от evgentus Посмотреть сообщение
Внести еще 2 поля что то типа delete_from и delete_to, и если пользователь удаляет у себя сообщение допустим из входящих проверять не удалил ли другой юзер у себя это сообщение из исходящих(если удалил delete_from будет 0)... И в зависимости удалил или нет, либо ставить значение 0, или удалять запись.
Так сделали?
зачем же так сложно? По идее, если один удалит сообщение, то в ьд его не будет, а значит и у другого пользователя оно "удалится"
0
 Аватар для iPIPka
39 / 39 / 5
Регистрация: 06.02.2011
Сообщений: 123
07.02.2011, 00:22
Поэтому-то так сложно) Надо так, чтоб если один удалит сообщение, то у второго оно останется, а не пропадет
0
 Аватар для evgentus
26 / 18 / 1
Регистрация: 05.02.2011
Сообщений: 55
07.02.2011, 04:29
Цитата Сообщение от Dellok Посмотреть сообщение
зачем же так сложно? По идее, если один удалит сообщение, то в ьд его не будет, а значит и у другого пользователя оно "удалится"
Предложите свой вариант реализации ЛС.
Мне кажется этот вариант самый оптимальный, не вижу смысла создавать 2 записи на одно сообщение, пусть в варианте который я озвучил и на 1 запрос больше будет, но БД не будет так сильно разрастаться.
0
126 / 93 / 18
Регистрация: 09.01.2011
Сообщений: 467
07.02.2011, 08:28
Цитата Сообщение от iPIPka Посмотреть сообщение
Поэтому-то так сложно) Надо так, чтоб если один удалит сообщение, то у второго оно останется, а не пропадет
Цитата Сообщение от evgentus Посмотреть сообщение
Мне кажется этот вариант самый оптимальный, не вижу смысла создавать 2 записи на одно сообщение, пусть в варианте который я озвучил и на 1 запрос больше будет, но БД не будет так сильно разрастаться.
Прошу прощения, не правильно понял вопрос.
Цитата Сообщение от evgentus Посмотреть сообщение
Предложите свой вариант реализации ЛС.
Сейчас находу придумал такой вариант: добавить не 2, а 1 поле, в котором через маркер держать ID получателя и отправителя. Когда один из пользователей удалил письмо, то убирать этот ид из этого поля. Так, имхо, будет лучше, если получатель будет не 1, а несколько.
0
 Аватар для evgentus
26 / 18 / 1
Регистрация: 05.02.2011
Сообщений: 55
07.02.2011, 08:52
Ну в принципе можно так попробовать... Но не получится использовать это для нескольких получателей, объясню...
В том варианте который я предложил, выборка писем происходит скажем по полю inbox и outbox, т.е. в первом хранится id получателя, во втором отправителя, в БД соответственно созданы индексы для этих полей, выборка будет происходить мгновенно, а для нескольких получателей нужно будет хранить например так "1:2:3:4" плохой вариант, ИМХО.
Да и для чего обычному юзеру потребуется отправлять массово письма?! Спамерам и администрации, имхо, письма и от тех и от других юзер сразу удаляет, если конечно он заглядывает в учетку.
Вот так я это всё вижу...

Добавлено через 12 минут
Щас посплю и в своем блоге статью напишу про реализацию ЛС, в своем видении....
0
126 / 93 / 18
Регистрация: 09.01.2011
Сообщений: 467
07.02.2011, 16:33
evgentus, для каких целей это должно использоваться, меня не интересует. Я просто помогаю с реализацией.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.02.2011, 16:33
Помогаю со студенческими работами здесь

Система обмена сообщениями
Здраствуйте форумчане! И так мне надо написать клиент-серверное сетевое приложение реализующее функционал системы обмена сообщениями...

Система обмена сообщениями
Есть ли какая-нибудь система обмена мообщениями, которая одновременно реализует паттерны "remote procedure call" и...

Реализовать механизм обмена сообщениями.
Привет Всем! Не могли бы мне помочь в следующей задачи!? 1)Задание: Делегаты и события. Реализовать механизм обмена сообщениями....

Приложение для обмена сообщениями
Здравствуйте. Необходимо написать приложение для обмена сообщениями. Я так понимаю, это должен быть чат. Но возникло несколько вопросов: ...

Создание севрера обмена сообщениями
Здравствуйте Хочу создать сервер для обмена текстовыми сообщениями, нарыл в msdn код сервера и клиента. Но они работают в разные стороны,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru