Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]System poczty wewnątrz serwisu
Forum PHP.pl > Forum > Przedszkole
basstone
Witam

Chciałem się zapytać czy ktoś ma sensowny pomysł na rozplanowanie poczty wewnątrz serwisu - czyt. wiadomości wysyłanych do siebie między użytkownikami strony.

Otóż cały problem polega na tym, że użytkownicy będą mogli kasować wiadomości, zarówno wysłane jak i odebrane - i w tym miejscu pojawia się moje pytanie. Ponieważ, jeśli użytkownik wysyłający skasuje wiadomość z poziomu swojej skrzynki - to skasuje ją również adresatowi, i dokładnie taka sama sytuacja gdy zamienimy ich rolami.

Bardzo chciałbym uniknąć robienia dwóch kopii każdej wiadomości (jednej dla nadawcy, drugiej dla adresata). Czy miałoby sens trzymać w bazie wiadomość dopóki nie skasują jej obaj użytkownicy? Mam na myśli, żeby zrobić komórki usunieto_nadawca oraz usunieto_adresat. Jeśli nadawca usunie wiadomość to już nie wyświetlimy jej w jego skrzynce, ale całkowicie skasujemy dopiero gdy tak samo usunie adresat. Czy takie rozwiązanie ma sens? Może macie inne lepsze propozycje?
krzywy36
ale tak to chyba zazwyczaj działa, no bo po co było by ograniczone miejsce w skrzynkach "pocztowych" na stronach? wink.gif Inna opcja to po prostu dodatkowe pola w bazie dla kazdej wiadomości: widoczność dla adresata i widoczność dla nadawcy.
Shido
Cytat(basstone @ 29.06.2012, 03:04:06 ) *
Bardzo chciałbym uniknąć robienia dwóch kopii każdej wiadomości (jednej dla nadawcy, drugiej dla adresata). Czy miałoby sens trzymać w bazie wiadomość dopóki nie skasują jej obaj użytkownicy? Mam na myśli, żeby zrobić komórki usunieto_nadawca oraz usunieto_adresat. Jeśli nadawca usunie wiadomość to już nie wyświetlimy jej w jego skrzynce, ale całkowicie skasujemy dopiero gdy tak samo usunie adresat. Czy takie rozwiązanie ma sens? Może macie inne lepsze propozycje?


U siebie kozystam z podobnego rozwiązania.
Tylko przy czymś takim trzeba zrobić w ten deseń:
Usuwa nadawca:
Skrypt sprawdza czy adresat też usunął, jeżeli tak to usuwa wiadomość, jeżeli nie to usunieto_nadawca = 1;
Usuwa adresat:
Skrypt sprawdza czy nadawca też usunął, jeżeli tak to usuwa wiadomość, jeżeli nie to usunieto_adresat = 1;

Cytat(krzywy36 @ 29.06.2012, 08:52:10 ) *
Inna opcja to po prostu dodatkowe pola w bazie dla kazdej wiadomości: widoczność dla adresata i widoczność dla nadawcy.

Też jakieś wyjście, ale po co miejsce marnować?
bpskiba
Dobrym rozwiązaniem może być mechanizm, który zamiast kasować wiadomość przenosi ją do innej bazy danych. Wtedy masz bazę danych "wiadomości usunięte" o niskim priorytecie bezpieczeństwa, którą można okresowo zgrywać na płytkę i truncate.... oraz drugą bazę korespondencji aktywnej o wysokim priorytecie bezpieczeństwa (czyli backupu) . Jednocześnie rozmiar zostaje pod kontrolą
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.