[MySQL] Gegevens mbt de bezoeker opslaan
Ik wil om spem en ander gezeik tegen te gaan eigenlijk alle sporen van de bezoeker opslaan, dus ik dacht om elke pagina die hij of zei opent, in een tabel in de db te zetten, met datetime en ip, maar wordt de site hier niet erg sloom van? of kan hij wel met gemak allemaal records toevoegen aan de database?
groeten,
Jonathan
Op zich blijft het tot ongeveer 50 miljoen records op een gemiddeld PC'tje wel snel. Hangt van een paar dingen af. MySQL is niet zo snel met INSERT (wel met SELECT), en zeker niet als er een INDEX op de column staat. Dus misschien ligt je limiet eerder op een miljoen voor goede snelheid. Hangt van je servers af, van je bezoekersaantal en van de dingen die je precies logt en de datatypes.
Ik denk dat je server dat gemakkelijk aankan zo één query meer. Maar waarom zou je ELKE pagina op laten vragen. Je DB gaat onnodig groot worden. Stel dat je 5000 bezoekers per dag krijgt? Ik vind het een beetje 'dom' om daar je DB mee vol te steken :s ?
Mee eens dat het absoluut niet intelligent is aangezien je webserver meestal al alles logt.
| user | pagina | ip |
| int(10) | int(10) | varchar(15) |
Wat is een index eigenlijk? gebruik ik zelf nooit...
Edit:
Ik verwacht niet meer dan 100 bezoekers per dag, en nadat ik heb meegemaakt dat ik ongeveer met de dood bedreigt ben, wil ik zoveel mogelijk loggen (nou, bedreigt valt wel mee, maar mensen wensen wel gewoon toe dat ik dood ben etc...)...
Ik verwacht niet meer dan 100 bezoekers per dag, en nadat ik heb meegemaakt dat ik ongeveer met de dood bedreigt ben, wil ik zoveel mogelijk loggen (nou, bedreigt valt wel mee, maar mensen wensen wel gewoon toe dat ik dood ben etc...)...
Gewijzigd op 01/01/1970 01:00:00 door - -
int(10) vind ik wat overdreven. Ik zou een 4-byte integer gebruiken.
IP zou ik als int opslaan aangezien dit veel minder bytes kost (dan moet je dus wel de puntjes effe er uithalen en er misschien wat nullen tussen zetten).
Elk karakter in een varchar is namelijk (minimaal) een byte. Maar, met 1 byte kun je integers van 0 tot 255 aanduiden. Met 2 bytes kun je al 255 * 255 (of was het 256 * 256?) getallen aanduiden. Dat is dus veel efficienter.
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
index = inhoudsopgave. Hiermee kun je de snelheid van de database enorm verhogen, een factor 1000 is zo maar mogelijk. Dit ligt echter wel aan de manier waarop de data is opgeslagen, hoe complex het datamodel is, etc. etc. Het op een goede manier gebruiken van indexen, is niet eenvoudig. En doe je verkeerd, dan kun je zelfs de snelheid omlaag halen... Hoge school database beheer.
Binnen MySQL zijn de mogelijkheden echter nogal beperkt, per query kun je slechts 1 index gebruiken.
Zie verder http://nl.wikipedia.org/wiki/Index_%28database%29
verder, scheelt het echt snelheis als je int(4) doet ipv int(10)?
Jonathan:
En daarom ga jij de database aanpassen? Ga je toch vooral niet druk maken om dit soort geblaat van een paar primaten. Af en toe moet je gewoon even een bord voor je hoofd zetten! Jij kunt er toch niets aan doen dat zij niet intelligenter zijn... Even een cpu-upgrade of wat extra geheugen er bij plaatsen zit er echt niet in! ;)... en nadat ik heb meegemaakt dat ik ongeveer met de dood bedreigt ben, wil ik zoveel mogelijk loggen (nou, bedreigt valt wel mee, maar mensen wensen wel gewoon toe dat ik dood ben etc...)...
Zet een scheldwoorden-filter op je site en dit soort onzin komt niet eens meer in de database terecht. Probleem opgelost.
Edit:
En daarom ga jij de database aanpassen?
nee, ben bezig met v2.0, wordt alles aangepast, db dus sowieso.
Edit:
Jij kunt er toch niets aan doen dat zij niet intelligenter zijn...
Tja, eigenlijk is het gewoon jaloezie...
Dit is trouwens wel interessant als je van plan bent veel ip adressen op te gaan slaan.
ok, is handig ja!
kun je het msis niet beter loggen in txt's met datum,ip,bezoektijd BV end at elke dag een andere txct wordt gemaakt met de datum ofzo
jeroen:
Nee, dan kun je nauwelijks meer wat doen met de data. Een database is gemaakt om data op te slaan en toegankelijk te maken. Je moet er alleen wel rekening mee houden dat een database langzamer wordt zodra je data gaat toevoegen. Gelukkig kan een database wel een paar miljard records kwijt en loop je niet zo heel snel tegen problemen aan. Zeker niet gezien de eenvoud van de data die in dit topic wordt genoemd.kun je het msis niet beter loggen in txt's met datum,ip,bezoektijd BV end at elke dag een andere txct wordt gemaakt met de datum ofzo
Dus, wil je de data gaan opslaan, gebruik dan een databbase. Wees alleen zuinig met het opvragen van ALLE records uit de database en gebruik de juiste indexen om de boel sneller te maken.
Verder zijn spambots nauwelijks te onderscheiden van andere users, ze gebruiken de zelfde user-agent en headers om zulk soort trucs te omzeilen.