Autor Zpráva
Simi
Profil *
Zdravim všechny, potřeboval bych poradit, chci udělat jednoduché počítadlo shlédnutí jednotlivých stránek, těch stránek není přesný počet ale budou přibývat. Něco jako třeba u inzerátů, kde je počet shlédnutí atd. díky za rady předem
ninja
Profil
Do souboru nebo databaze si pri kazdem zobrazeni ulozis +1 id ID ci URL aktualni stranky. S cim konkretne si nevis rady?
jokerxyz
Profil *
Na tu posledni radu pozor, je trosku nebezpecna, pokud tam mas pak dalsi selecty atp na stejnou tabulku - pri hodne navstevach ti to pak blokuje tabulku. Optimalne doporucuji ukladat bud do tmp tabulky a nebo do souboru ve formatru treba jen ID radek po radku a pak zpracovat treba v 15 minutovych intervalech. Reseni je vice, ale primo cpat +1 porad je dosti spatny do te stejny tabulky.
bohyn
Profil
jokerxyz
Kdyz to bude ukladat do souboru tak se mu budou pri soubeznych zobrazeni stranky "ztracet" navstevy (nekolikanasobny soucasny zapis do souboru je dost nepredvidatelny). Docasna tabulka je zase smazana pri uzavreni spojeni (teda aspon me se nepovedlo udelat "trvanlivejsi"). Zdrzeni nekolika setin maximalne desetin vteriny bych se az tak nebal.
jokerxyz
Profil *
Myslel jsem docasnou tabulku vytvornou fyzicky. tedy normalni tabulku do ktere by zapisoval jen vstupy:-). Tak by nedrzel nejake selecty. A ver mi to neni par setin. Pri vetsim provozu a vetsi db to muze zpusobit pomerne problemy. Typicikym prikladem ze zkusenosti jsou weby s flash hrami, kde tohle presne delaji. Potom jak jim naroste navstevnost se nestaci divit, ze web je pomaly, ale staci otevrit procesy v mysql a jde videt, ze tam ceka treba 10 selectu na na pet insertu.
Joker
Profil
jokerxyz
Nějak se mi nezdá, že by dotaz typu:
UPDATE tabulka SET navstev = navstev + 1 WHERE id=xx
znamenal nějaké výrazné zatížení.
Případně se ale dá udělat zvláštní tabulka:
id_stranky | navstev - to bude dokonce statická tabulka, takže by práce s ní měla být hodně rychlá.
ninja
Profil
jokerxyz: Spise je chyba pri kazdem zobrazeni stranky znovu nacitat pocet shlednuti. Tato informace neni vubec kriticka a cache napriklad po 5 minutach nicemu nevadi.
imploder
Profil
bohyn
Kdyz to bude ukladat do souboru tak se mu budou pri soubeznych zobrazeni stranky "ztracet" navstevy (nekolikanasobny soucasny zapis do souboru je dost nepredvidatelny).
Tak ten soubor zamče pro zápis. Bude čekat, dokud soubor nebude odemčený, až bude tak dá flock() a pak teprve zapíše. Takže když se bude zrovna do souboru zapisovat, skript tu chviličku počká. V databázi by to bylo asi taky tak.
jokerxyz
Profil *
Joker: Je to presne jak pise imploder, ono se totiz tabulka zamkne a pri navstevovanem webu kde je desitky zobrazeni za sekundu to opravdu dela problemy, a kdyz ma nekdo tabulky o objemu par tisicu nebo x mega, tak to je jeste horsi - mluvim ze zkusenosti, uz jsem videl x ruznych pripadu kdy cele weby pravde mely problemy diky tomuto

Omlouvam se ze uzivam nick jokerxyz, ale nahodou jsem ho pouzil kdyz Joker ktery pouzivam byl obsazenej :))))

Nicmene jak pises to reseni. Tak by opet byl problem v tom, ze by pri selectu musel vyckavat na inserty -updaty ktery v danou chvili muze byt kriticky. Lepsi je mit tabulku pouze pri inserty a pak to tam prepocitavat jednou za x minut.


Ninja: Myslim ze i 30 minut je v pohode, je to jen obecna statisticka informace:-), ale nicmene to neresi problem ukadani.....

Imploder: Ano se soubory me nenapado ze se to zamyka, to by asi bylo zbytecne pomalejsi nez to resit mezi tabulkou a pak to prepocitavat - s tim mam vyborne zkusenosti.
Joker
Profil
jokerxyz
Jo, Joker už mám já :-)

ono se totiz tabulka zamkne a pri navstevovanem webu kde je desitky zobrazeni za sekundu to opravdu dela problemy, a kdyz ma nekdo tabulky o objemu par tisicu nebo x mega, tak to je jeste horsi
Zkoušel jsem udělat nějaký test na vygenerované tabulce: id (INT, PRIMARY, AUTO_INCREMENT) | navstev (INT), 10 000 řádků a můj počítač stíhá 100 000 updatů za 7-7,5 sekundy, tj. okolo 14000 updatů za sekundu.
Když by se teda u vytíženějšího webu použilo kešování, takže SELECT by se dělal jen málokdy, tak by to nemělo mít problém se stovkami, možná tisíci aktualizací za sekundu, ne?
Aesir
Profil
Joker:
Myslím, že jokerxyz upozorňoval na to, aby se počítadlo neukládalo do stejné tabulky, kde budou uložené samotné počítané stránky. Tam byste musel do svého testu započítat další paralelní requesty na tyto stránky.
jokerxyz
Profil *
Presne tak. To co pises Jokere jsem psal nahore tedy samostatna tabulka pro navstevy a jednou za cas to prepocitat do tabulky clanku - ci ceho to :-). Ale nezapisovat +1 primo v tabulce tech clanku do sloupce zobrazeni. To opravdu dela neplechu. Jak rikam, vim to ze zkusenosti a ne z jednoho webu a nejen z redakcnich ale i treba reklamnich systemu (typicke klikacky tohle delaji:))

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: