Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyświetlanie newsów dla użytkowników systemu - optymalizacja, proszę o podpowiedź: jak to zoptymalizować
adami
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.09.2013

Ostrzeżenie: (0%)
-----


mam crm własnej produkcji. mam w nim uzytkowników ze statusami np.: 1=aktywny, 2 = nieaktywny

chcę napisać jakieś proste narzędzie do wyświetlania dla uzytkowników komunikatów od admina. po zalogowaniu użytkownika, wyskakuje mu okienko z informacją np. "1 nowa wiadomość od admina" + treść + kliknij "potwierdzam, że przeczytałęm i rozumiem". potwierdzenia odkłądają się w bazie.

przychodzi mi do głowy rozwiązanie - ale bardzo toporne i z dużą ilością zapytań... może ktoś będzie miał pomysł na lepsze?

mój pomysł:

1. tabela "komunikaty": id_komunikaty, news_title, news_content, timestamp_created
2. tabela "komunikaty_log": id_komunikaty, id_user, status (0 niepotwierdzony, 1 potwierdzony), timestamp_update

skrypt:
- dla wszystkich komunikatów sprawdza, które są potiwredzone dla danego uzytkownika - te niepotwierdzone wyświetla jako "potwierdź", nowe potwierdzenia zapisuje do "komunikaty_log"

wady:
- aby komunikaty wyskakiwały na bieżąco, myszę uruchamiać skrypt przy każdym przeładowaniu strony
- gdy za miesiąc dodam nowego użytkownika - wyświetlą mu się wszystkie stare komunikaty
- w sumie: dużo zapytań i wykonywania skryptów jak na tak prostą funckjonalność....

Czy ktoś może będzie miał na to lepszy pomysł?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
buliq
post
Post #2





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Cytat
gdy za miesiąc dodam nowego użytkownika - wyświetlą mu się wszystkie stare komunikaty

questionmark.gif jak questionmark.gif

Nie ma innej możliwości, jeżeli chcesz zachować "szablony" (które możesz też trzymać w plikach)
Z tabeli "log" będziesz pobierać tylko dla określonego usera komunikaty.

Możesz też w tabelu "uzytkowników" dodać kolumnę "komunikaty_cache" i jeżeli wartość tej kolumny jest inna od 0 to wykonuje dodatkowe zapytanie do "komunikatów". Jak nie ma komunikatów do wyświetlenia to update dla tej kolumny.


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
adami
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.09.2013

Ostrzeżenie: (0%)
-----


nie bardzo rozumiem ideę kolumny "komunikaty_cache". możesz bardziej łopatologicznie?
Go to the top of the page
+Quote Post
buliq
post
Post #4





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


jeżeli boisz się ilości zapytań, to w tabeli użytkownika dodajesz tą właśnie kolumnę. Tabelę userów i tak odpytujesz, pobranie nowej kolumny nie stanowi problemu.

W momencie dodawania komunikatu do usera, ustawiasz wartość kolumny komunikat_cache na 1 lub inna wartość różną od 0.
W momencie ustawiania, ze usera akceptuje i nie ma już więcej komunikatów do akceptacji ustawiasz cache na 0

sprawdzasz wartość cache i jeżeli równe od 0 to wykonujesz zapytanie pobierające komunikaty.

Nie wiem czy jest sens bronić się przed tym zapytaniem przy każdym uruchomieniu skryptu.


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 10:19