Sukromne spravy na webe

Programovacie jazyky, rady, poradňa...
Holubar
Darca
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Sukromne spravy na webe

Príspevok od používateľa Holubar »

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?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Sukromne spravy na webe

Príspevok od používateľa audiotrack »

určite tam máš aj iné selecty pri každej stránke, tak to stačí spraviť do neho nejakým joinom
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Re: Sukromne spravy na webe

Príspevok od používateľa Mmartin »

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 :D (mozno sa to da aj lepsie, ale takto by som to robil ja)
Holubar
Darca
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Re: Sukromne spravy na webe

Príspevok od používateľa Holubar »

audiotrack napísal:určite tam máš aj iné selecty pri každej stránke, tak to stačí spraviť do neho nejakým joinom
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 tip
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Sukromne spravy na webe

Príspevok od používateľa audiotrack »

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 :D (mozno sa to da aj lepsie, ale takto by som to robil ja)
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 textu :) )
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Re: Sukromne spravy na webe

Príspevok od používateľa Mmartin »

to je uz samozrejmost, on sa pytal len na zistovanie novych sprav. Ale mas pravdu, na to where pre = mojeid som zabudol :)
Numline1
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 858
Registrovaný: 04 dec 2006, 18:04

Re: Sukromne spravy na webe

Príspevok od používateľa Numline1 »

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 :D (mozno sa to da aj lepsie, ale takto by som to robil ja)
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.
__construct
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 108
Registrovaný: 23 sep 2009, 9:32
Bydlisko: Dark Side of The Moon
Kontaktovať používateľa:

Re: Sukromne spravy na webe

Príspevok od používateľa __construct »

Numline1 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.
A ja mám zase komentár k Tvojmu SET, ktorý zaberá v DB 1 byte .. ak by použil BIT
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 ..
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Re: Sukromne spravy na webe

Príspevok od používateľa Mmartin »

chalani, to sa musite tak predbiehat? Vsak je to o nanosekundach - milisekundach (v malom mnozstve)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Sukromne spravy na webe

Príspevok od používateľa audiotrack »

Mmartin napísal:chalani, to sa musite tak predbiehat? Vsak je to o nanosekundach - milisekundach (v malom mnozstve)
odkedy sa čas meria v bitoch a bajtoch?
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Re: Sukromne spravy na webe

Príspevok od používateľa Mmartin »

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.
__construct
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 108
Registrovaný: 23 sep 2009, 9:32
Bydlisko: Dark Side of The Moon
Kontaktovať používateľa:

Re: Sukromne spravy na webe

Príspevok od používateľa __construct »

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.
Si to znova prečítaj .. a ak to nevidíš tak Ti to vysvetlím - 1 byte je 8 bitov .. ;-)
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Re: Sukromne spravy na webe

Príspevok od používateľa ppt »

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
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Re: Sukromne spravy na webe

Príspevok od používateľa Holubar »

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.
ropman
Medium Professional
Medium Professional
Príspevky: 1250
Registrovaný: 12 apr 2010, 21:07

Re: Sukromne spravy na webe

Príspevok od používateľa ropman »

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
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Re: Sukromne spravy na webe

Príspevok od používateľa Holubar »

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.
__construct
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 108
Registrovaný: 23 sep 2009, 9:32
Bydlisko: Dark Side of The Moon
Kontaktovať používateľa:

Re: Sukromne spravy na webe

Príspevok od používateľa __construct »

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.
Nejak mi nedalo to čo písal ropman s tým num_rows a SELECT COUNT(*) .. ale mal pravdu ..
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.
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Re: Sukromne spravy na webe

Príspevok od používateľa Mmartin »

__construct napísal: Si to znova prečítaj .. a ak to nevidíš tak Ti to vysvetlím - 1 byte je 8 bitov .. ;-)
Nerob zo mna debila, dobre? Zaklady pocitacov pod kapotou ovladam dobre...
Napísať odpoveď