Dynamiczne pobieranie danych z bazy czy zapis w ciasteczka.

0

Witam serdecznie. Ostatnio głowie się nad pewną rzeczą, jak zrobić system "lajkowania" postów/obrazków. Miało by to działać w sposób taki że gdy ktoś "polajkuje" wpis na blogu (kliknie łapke w górę etc) to przy kolejnej wizycie ta łapka będzie zamieniona na dislike czyli łapka w dół. Problem w tym że nie wiem jak to rozwiązać, czy dynamicznie sprawdzać czy wpis w tym poście są polajkowane, czy raz pobrać wszystkie polajkowane wpisy i zapisać do Coockie'sa/sesji etc? Rozwiązanie musi mało korzysać z DB (ponieważ ta ma ograniczenia połączenia). Jakieś pomysły? Z góry serdeczne dziękuje.

1

Najlepiej jak pobierzesz wszystko to co wyświetlasz na ekranie w jak najmniejszej liczbie zapytań. Dodatkowo to co może być zmieniane tylko przez danego usera możesz cachować w cookies, żeby nie pytać co chwilę o to samo. Zaimplementuj obojetnie jak bez cachowania bez innych bajerow, zobacz czy jest za wolne, jak bedzie za wolne to optymalizuj, jak nie to zostaw. B. czesto chcialoby sie optymalizowac miejsca ktore nie maja sensu zeby je optymalizowac. @Adam Boduch może Ci powie jak to tutaj jest zaimplementowane albo możesz podejrzeć w źródłach Coyote.

0

Wiesz co problem w tym gdy userów na stronie będzie więcej. Co wtedy? baza będzie spowalniała. Myślałem że będe sobie Cachował wyniki zapytań. i przy dawaniu do ulubionych/ polajkowaniu czy też kliknięciu dislike bedzie po prostu odświeżało z bazy ;-) Albo drugi pomysł taki że pracować na plikach (oczywiście zabezpieczyć je), potem wymyśleć skrypt/hash/ czy system zapisu taki by CRONEM wrzucać codziennie do bazy jednym zapytaniem. Powiedzmy przerwa w działaniu serwisu co 2 dni na 5 minut. Ale czy to może wypalić ?

1

Nie stwarzaj sobie na siłę problemów bo nigdy nie skończysz robić strony. Zajmij się problemem jak się pojawi. Dodaj opcję blokady tej funkcjonalności jak się boisz i w razie jakby się coś działo to na chwile zablokujesz i zaimplementujesz lepiej. Wydaje mi się, że pomysł z plikami jest gorszy niż 100 requestów do bazy danych na usera na godzine.

2

@MrMuniez:

  1. jw. - nie rób przedwczesnej optymalizacji, bo: a) prawdopodobnie nie ma takiej potrzeby; b) ludzie stosujący przedwczesną optymalizację na ogół kończą z mniej optymalnymi rozwiązaniami
  2. Jak masz limit POŁĄCZEŃ to i tak niewiele zmienia - połączenie masz raczej stałe przez cały czas wykonywania skryptu
  3. Cookies to zawsze zły pomysł, ze względu na ich ograniczenia (głównie rozmiarem) - lepszą opcją jest localStorage
  4. Pliki to zdecydowanie zły pomysł. Odczyt i analiza tych danych prawdopodobnie zajmie więcej czasu niż zapytanie do bazy. To ma sens, jeżeli Twoje zapytanie wykonuje się 1s np. Ale wtedy lepiej cache-owanie zrobić na zasadzie cachowania konkretnych zapytań, niż kombinowania z cachem pod daną funkcjonalność - prościej i szybciej. Pamiętaj też, że bazy danych same tworzą sobie jakieś cache. Jeżeli jakieś zapytanie wykonuje się długo - to wykonanie go ponownie i wykonywanie podobnych zapytań na ogół trwa już tylko ułamek z tego, co było za pierwszym razem.
  5. Z cronem to już w ogóle niewypał. Jeżeli ty chcesz zapisywać lajka do bazy od razu, a po prostu oszczędzać na odczycie - to jeszcze jakoś zrozumiem. Ale tworzenie opóźnionego zapisu do bazy? Bez sensu, jak user przesiądzie się na inną maszynę to jego lajki poznikają. Nie do tego jest baza danych, żeby jej używać raz dziennie!
  6. Jeżeli piszesz większy serwis to po prostu kup coś lepszego niż hosting za sms za 2,46zł. Lepszy pakiet z takiego hekko powinien pociągnąć Ci spokojnie parę tysięcy userów (nie jednocześnie).

Jeżeli chcesz pisać serwis obsługujący wielu użytkowników na raz to php ogólnie jest złą technologią, gdyż i tak jesteś skazany na vps/serwery dedykowane ze względu na duże limity jakie stawiane są na hostingach z php (ograniczanie liczby interpreterów na raz - nieraz jest to większe ograniczenie niż na liczbę połączeń z bazą danych - w takim przypadku cały wątek nie ma sensu, bo pierwszym ograniczeniem na jakie trafisz będzie właśnie ilość wykonywanych skryptów jednocześnie, a nie liczba połączeń).

0

Okej. Zrobie to na "pałe" z zapytaniami do bazy danych. Słuchajcie a na jaką Technologie polecacie sie przenieść ;-) Jestem otwarty na propozycje bo PHP i tak już mnie nudzi chociaż lubie go za prostote ;-)

1

python

1 użytkowników online, w tym zalogowanych: 0, gości: 1