Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] nieprzeczytane posty
AndyPSV
post
Post #1





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


w jaki sposob rozwiazac najefektywniej problem "ostatnio przeczytanych" postow?
musi to byc baza? czy cookie albo sesja?

jak to zrobic?
zapisuje nieprzeczytane posty od daty ostatniej wizyty (24h) a nastepnie je kasuje?

chodzi mi o teorie
chodzi mi o rozwiazanie mozliwie jak najlepsze (najszybsze, takie ktore wytrzyma znaczacy ruch)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
AndyPSV
post
Post #2





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


Najbardziej optymalne i najlepsze rozwiazania wydaja mi sie byc takie, jesli jest jeszcze cos do poprawienia to poprosze o napisanie:

1. Limit postow: 100
2. Jest tak zrobione, ze przy zalogowaniu sprawdza ostatnia date zalogowania sie (robie strone na certyfikatach ssl, 256-bit wiec caly czas trzeba sie logowac) i na jej podstawie robi petle, gdzie dodaje wszystkie nieprzeczytane posty od najnowszych z limitem jak w punkcie 1.

3. Post jest zamarkowany jako przeczytany, jesli wejdzie sie na ostatnia strone (ostatnia strona moze byc pierwsza strona, glowna tematu). Jest to zrobione bez obciazania czegokolwiek - wystarczy sprawdzic ilosc stron i jesli user wejdzie na ostatnia to sie odhacza.
4.

  1. CREATE TABLE `chcur_ph_unread_pl` (
  2. `id_u` int(11) NOT NULL,
  3. `id_` int(11) NOT NULL,
  4. `id_f` int(11) NOT NULL,
  5. KEY `id_u` (`id_u`,`id_`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;


1 pole wiecej id_f <- mowi, do ktorego forum zostal przypisany post, eliminuje to sprawdzanie kazdego postu i zwieksza szybkosc (czyt. czy w danym forum sa nieprzeczytane posty).

Gwoli wyjasnienia: kiedy ktos doda post w TEMACIE to jest w tym ostatnim uaktalniania kolumna: "updated", po tej kolumnie wyswietlana jest lista tematow (wg najnowszych).


----

dorzuce jeszcze kod, moze komus sie przyda:

uaktualnianie bazy
  1. $q = q('SELECT id,id_ FROM `'.PRFX.'ph_topics'.LG.'` WHERE updated BETWEEN "'.$r['last_logged'].'" AND "'.DATETIME.'" ORDER BY updated DESC LIMIT 100'); if(n_r($q) > 0) while($_r = f($q)) {
  2. $q2 = q('SELECT id_u FROM `'.PRFX.'ph_unread'.LG.'` WHERE id_u = "'.$_r['id'].'" AND id_ = "'.$_r['id'].'" LIMIT 1');
  3. if(n_r($q2) == 0) q('INSERT INTO `'.PRFX.'ph_unread'.LG.'` (id_u,id_,id_f) VALUES ("'.$r['id'].'","'.$_r['id'].'","'.$_r['id_'].'")');
  4. }


tablea "updated" w temacie -> rodzaj: DATETIME

reszta, wiadomo

Ten post edytował AndyPSV 21.10.2010, 10:08:30
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 14:35