Autor Zpráva
Jakubbb
Profil *
Ahoj,
mám takový problém k zamyšlení. Na webu mám systém interních zpráv a teď bych ho potřeboval rozšířit o hromadnou zprávu (od admina všem). A ať nad tím přemýšlím, jak přemýšlím, tak se mi řešení vůbec nelíbí.

V podstatě mě napadly dvě možnosti.

1.) Vytvořit zprávu a tu všem hromadně vložit do pošty. Což se mi moc nezamlouvá, protože mám 30k+ uživatelů a mít tolikrát jednu a tu samou zprávu v db se mi zdá nesmyslný.
2.) Vytvořit u uživatele sloupeček, ve kterém bude id poslední hromadné nepřečtené zprávy a hromadně měnit při vložení nové jen tenhle sloupec s identifikátorem. Tady zase ale vidím problém při více zprávách (a i tak je potřeba přeaktulizovat 30k řádků).
2,5.) Varianta dvojky, jen s vlastní tabulkou, kde se vždy při přečtení vloží identifikátor poslední zprávy (takže neaktivní uživatelé tam nic mít nebudou, tudíž mi to tolik nezapráská DB). Problém vidím v tom, že tahle tabulka bude rychle bobtnat a za chvíli by mohla mít spousty řádků, což by zase nebylo zrovna moc efektivní, když se vlastně hromadná zpráva ude nejspíš kontrolovat při každém načtení.

Jak řešíte hromadné zprávy vy? Jsou nějaké jiné metody? Díky za popostrčení správným směrem.
Joker
Profil
Jakubbb:
Stačí pro hromadnou zprávu vyhradit speciální ID příjemce. Třeba 0 nebo -1 nebo jakékoliv, které se nepoužívá pro žádného uživatele (pozor, aby se to ID nepoužívalo třeba pro nepřihlášeného uživatele).

A výběr doručených zpráv uživatele se upraví tak, aby se vybraly zprávy, kde příjemce je daný uživatel nebo „všichni“.
Str4wberry
Profil
Dřív nebo později pravděpodobně dojdete k tomu, že budete chtít poslat hromadnou zprávu nějaké omezené skupině uživatelů.

Můžete ukládat zprávy do samostatné tabulky. A vytvořit si další tabulku, kde se daná zpráva propojí autorem a se všemi konkrétními příjemci.

V zprávy potřebujete evidovat, zda si ji příjemce přečetl, smazal a podobě, takže si s jedním záznamem stejně nejspíš nevystačíte.
Joker
Profil
Str4wberry:
Takhle bych řešil přidávání více libovolných příjemců ke zprávě (tj. vyberu jako příjemce dva, tři, … libovolné uživatele).
Kdyby to byly předem definované skupiny („všichni“), zavedl bych ty skupiny jako speciální druh uživatelů a jako příjemce dal jejich ID.

Asi by nebylo ani ideální, abych dal rozeslat hromadnou zprávu a do tabulky příjemců se vložilo 30 000 záznamů.
Stejnětak kdybych chtěl zobrazit všechny příjemce zprávy, bude lepší tam napsat „všichni“, než vypsat všech těch 30 000 uživatelů.

Ještě upozorním, že
1. mít speciálního příjemce „všichni“ a
2. vložit jako příjemce všechny uživatele
není to samé. (A totéž platí pro skupiny.)

Když odešlu zprávu všem a poté se registruje nový uživatel, v případě 1. tu zprávu uvidí i on, v případě 2. ji neuvidí. Čili případ 2. je vlastně „všichni, kdo byli registrovaní (resp. členy skupiny) ve chvíli odeslání zprávy“.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: