Sukromne spravy na webe
-
Holubar
Darca
- Príspevky: 3894
- Registrovaný: 24 feb 2005, 21:26
- Bydlisko: Senec
- Kontaktovať používateľa:
Sukromne spravy na webe
Chcel by som stranku obohatit o moznost posielania sukromnych sprav, tak ako tu na fore, tak rozmyslam, ako to zrealizovat. Cele by to nemalo byt komplikovane a mala by to vyriesit jedna tabulka.
Spytat sa chcem hlavne na zistovanie novych sprav. Napada ma dat na kazdu stranku skript pre pripojenie k db a select z danej tabulky. To znamena, co nacitanie, to minimalne jeden SELECT. Nebudem takto pretazovat databazu? Existuje elegantnejsie riesenie?
Spytat sa chcem hlavne na zistovanie novych sprav. Napada ma dat na kazdu stranku skript pre pripojenie k db a select z danej tabulky. To znamena, co nacitanie, to minimalne jeden SELECT. Nebudem takto pretazovat databazu? Existuje elegantnejsie riesenie?
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Sukromne spravy na webe
určite tam máš aj iné selecty pri každej stránke, tak to stačí spraviť do neho nejakým joinom
Re: Sukromne spravy na webe
vytvor si tabulku "spravy", stacia stlpce od(varchar), pre(varchar), cas(datetime), precitane(int)
pri poslani nastavi "precitane" na 0, a potom uz budes len volat prikazom "select * from spravy where precitane=0" (samozrejme to optimizuj (velke pismena,`,...)), a potom mu len niekde vypise cez mysql_num_row, kolko tych neprecitanych ma, ak pride na stranku so spravou, zavola prikaz a nastavi precitane na 1...
Celkom bordel, ale snad porozumies
(mozno sa to da aj lepsie, ale takto by som to robil ja)
pri poslani nastavi "precitane" na 0, a potom uz budes len volat prikazom "select * from spravy where precitane=0" (samozrejme to optimizuj (velke pismena,`,...)), a potom mu len niekde vypise cez mysql_num_row, kolko tych neprecitanych ma, ak pride na stranku so spravou, zavola prikaz a nastavi precitane na 1...
Celkom bordel, ale snad porozumies
-
Holubar
Darca
- Príspevky: 3894
- Registrovaný: 24 feb 2005, 21:26
- Bydlisko: Senec
- Kontaktovať používateľa:
Re: Sukromne spravy na webe
V podstate az na par statickych mas pravdu, takto to sice bude rypacka vsade montovat dalsi JOIN, ale asi lepsie ako dalsi extra SELECT. Dik za tipaudiotrack napísal:určite tam máš aj iné selecty pri každej stránke, tak to stačí spraviť do neho nejakým joinom
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Sukromne spravy na webe
tak toto určite nestačí. Minimálne do toho query treba pridať ešte where pre = moje_id inak budeš vždy načítavať všetky nové správy aj keď nemusíš. A k tej tabuľke by som ešte pridal stlpce niečo ako vymazane_od a vymazane_pre, lebo keď si správu vymaže odosielateľ z odoslanej pošty, tak by ju zmazal aj prijímateľovi a to by bolo dosť nepríjemne. Treba rozlišovať kto ju zmazal, a ak sú oba príznaky na zmazaná tak potom rovno zmazať aj z tabuľky (a nehovoriac o tom že tam nemáš id a ani text, tak neviem čo za správy sa ti to vlastne posielajú bez textuMmartin napísal:vytvor si tabulku "spravy", stacia stlpce od(varchar), pre(varchar), cas(datetime), precitane(int)
pri poslani nastavi "precitane" na 0, a potom uz budes len volat prikazom "select * from spravy where precitane=0" (samozrejme to optimizuj (velke pismena,`,...)), a potom mu len niekde vypise cez mysql_num_row, kolko tych neprecitanych ma, ak pride na stranku so spravou, zavola prikaz a nastavi precitane na 1...
Celkom bordel, ale snad porozumies(mozno sa to da aj lepsie, ale takto by som to robil ja)
Re: Sukromne spravy na webe
to je uz samozrejmost, on sa pytal len na zistovanie novych sprav. Ale mas pravdu, na to where pre = mojeid som zabudol 
Re: Sukromne spravy na webe
Len mensi komentar k "precitane(int)". Nevravim, ze to takto nieje mozne, ale MySQL a urcite aj dalsie DB maju jednu krasnu vec, ktorou je typ dat s nazvom "set", ktory povoluje dve hodnoty, napriklad 0 s 1. Urcite je to pre pouzitie s dvoma hodnotami lepsie ako zbytocny "int". To len pre zaujimavost.Mmartin napísal:vytvor si tabulku "spravy", stacia stlpce od(varchar), pre(varchar), cas(datetime), precitane(int)
pri poslani nastavi "precitane" na 0, a potom uz budes len volat prikazom "select * from spravy where precitane=0" (samozrejme to optimizuj (velke pismena,`,...)), a potom mu len niekde vypise cez mysql_num_row, kolko tych neprecitanych ma, ak pride na stranku so spravou, zavola prikaz a nastavi precitane na 1...
Celkom bordel, ale snad porozumies(mozno sa to da aj lepsie, ale takto by som to robil ja)
-
__construct
Medium Expert
- Príspevky: 108
- Registrovaný: 23 sep 2009, 9:32
- Bydlisko: Dark Side of The Moon
- Kontaktovať používateľa:
Re: Sukromne spravy na webe
A ja mám zase komentár k Tvojmu SET, ktorý zaberá v DB 1 byte .. ak by použil BITNumline1 napísal:
Len mensi komentar k "precitane(int)". Nevravim, ze to takto nieje mozne, ale MySQL a urcite aj dalsie DB maju jednu krasnu vec, ktorou je typ dat s nazvom "set", ktory povoluje dve hodnoty, napriklad 0 s 1. Urcite je to pre pouzitie s dvoma hodnotami lepsie ako zbytocny "int". To len pre zaujimavost.
http://dev.mysql.com/doc/refman/5.0/en/ ... alues.html tak ušetrí ešte viac .. Okrem toho namiesto SET môže použiť aj TINYINT - to tiež zaberá v DB 1 byte a mám taký dojem, že to je ešte rýchlejšie ..
Re: Sukromne spravy na webe
chalani, to sa musite tak predbiehat? Vsak je to o nanosekundach - milisekundach (v malom mnozstve)
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Sukromne spravy na webe
odkedy sa čas meria v bitoch a bajtoch?Mmartin napísal:chalani, to sa musite tak predbiehat? Vsak je to o nanosekundach - milisekundach (v malom mnozstve)
Re: Sukromne spravy na webe
cas sa nemeria v bitoch, to som aj napisal, ze ide len o milisekundy, kedze vsetci pisu, co je rychlejsie.
A ked ide o pamat, sami napisali, ze obe zaberaju len 1byte.
A ked ide o pamat, sami napisali, ze obe zaberaju len 1byte.
-
__construct
Medium Expert
- Príspevky: 108
- Registrovaný: 23 sep 2009, 9:32
- Bydlisko: Dark Side of The Moon
- Kontaktovať používateľa:
Re: Sukromne spravy na webe
Si to znova prečítaj .. a ak to nevidíš tak Ti to vysvetlím - 1 byte je 8 bitov ..Mmartin napísal:cas sa nemeria v bitoch, to som aj napisal, ze ide len o milisekundy, kedze vsetci pisu, co je rychlejsie.
A ked ide o pamat, sami napisali, ze obe zaberaju len 1byte.
Re: Sukromne spravy na webe
Holubar: Napr phpbb to riesi tak, ze v tabulke users je jeden stlpec s poctom novych sukromnych sprav (napr. new_pm). Ak mi pride sprava, zvysi sa pocet new_pm o 1. Ak precitam spravu, znizi sa o 1 (resp sa aktualizuje podla aktualneho stavu v schranke PM). Takto nemusis selectovat nic viac, pretoze urcite vytahujes zaznam z tabulky userov (kedze user pri citani sprav musi byt prihlaseny).
-
Holubar
Darca
- Príspevky: 3894
- Registrovaný: 24 feb 2005, 21:26
- Bydlisko: Senec
- Kontaktovať používateľa:
Re: Sukromne spravy na webe
ppt: co sa tyka prihlasenia uzivatela, tak do tabulky user sa ide iba raz pri prihlaseni, vtedy sa ulozia premenne do SESSION a do tabulky uz viac nie je potrebne pozerat. Cize keby som to urobil ako pises, tak sa o novych spravach uzivatelia dozvedia az pri dalsom prihlaseni, ja vsak chcem aby bol stav novych sprav kontrolovany pri kazdom novom nacitani stranky, cize na kazdej stranke musi byt minimalne jeden SELECT a ako napisal audiotrack, vacsinaa stranok uz aspon jeden obsahuju, tak k nemu pripojim aj tabulku sprav a na statickych strankach SELECT dopisem.
Re: Sukromne spravy na webe
ja by som teda pouzil riesenie typu co napisal mmartin, zas netreba za kazdu cenu kvoly mizivemu narastu vykonu takymto stylom zneprehladnovat kod... akurat miesto mysql_num_rows by som pouzil select count(*) ... kvoly rychlosti.
-
Holubar
Darca
- Príspevky: 3894
- Registrovaný: 24 feb 2005, 21:26
- Bydlisko: Senec
- Kontaktovať používateľa:
Re: Sukromne spravy na webe
No moja hlavna otazka bola, ci v pripade, ze dam na zaciatok kazdej stranky jeden SELECT navyse nezahltim db. Nemam este skusenosti z praxe, takze neviem, ako sa to bude spravat, ked bude na stranke 100 alebo 1000 ludi.
Z hladiska prehladnosti by to bolo ovela lepsie, pretoze si budem isty, ze na ziadnu stranku nezabudnem, nemusim to mnotovat do roznych SELECTOV a pod...Len ci ten dopad na vykon bude naozaj mizivy, ako pises.
Z hladiska prehladnosti by to bolo ovela lepsie, pretoze si budem isty, ze na ziadnu stranku nezabudnem, nemusim to mnotovat do roznych SELECTOV a pod...Len ci ten dopad na vykon bude naozaj mizivy, ako pises.
-
__construct
Medium Expert
- Príspevky: 108
- Registrovaný: 23 sep 2009, 9:32
- Bydlisko: Dark Side of The Moon
- Kontaktovať používateľa:
Re: Sukromne spravy na webe
Nejak mi nedalo to čo písal ropman s tým num_rows a SELECT COUNT(*) .. ale mal pravdu ..Holubar napísal:No moja hlavna otazka bola, ci v pripade, ze dam na zaciatok kazdej stranky jeden SELECT navyse nezahltim db. Nemam este skusenosti z praxe, takze neviem, ako sa to bude spravat, ked bude na stranke 100 alebo 1000 ludi.
Z hladiska prehladnosti by to bolo ovela lepsie, pretoze si budem isty, ze na ziadnu stranku nezabudnem, nemusim to mnotovat do roznych SELECTOV a pod...Len ci ten dopad na vykon bude naozaj mizivy, ako pises.
Inak pokiaľ na začiatku prihlásenia budeš mať navyše jeden SELECT COUNT(*) a používaš na tú tabuľku MyISAM tak sa podľa mňa neni čoho obávať ..
Testoval som to na tabuľke čo má 2844047 riadkov:
InnoDB:
pri num_rows to bolo 6.7979 sekundy a pri COUNT(*) to bolo 4.5031 sekundy.
MyISAM:
pri num_rows to bolo 5.0399 sekundy a pri COUNT(*) to bolo 2.5225 sekundy.
Re: Sukromne spravy na webe
Nerob zo mna debila, dobre? Zaklady pocitacov pod kapotou ovladam dobre...__construct napísal: Si to znova prečítaj .. a ak to nevidíš tak Ti to vysvetlím - 1 byte je 8 bitov ..