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

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

25.09.2008, 11:43. Показов 5768. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru