PHP Chat logika?
Készítettem egy "chat"-et PHP-ben, mysqli használatával egy tutorial alapján.
A kérdésem, hogy van-e egyszerűbb/gyorsabb megoldás? Ennek a logikája, hogy 2 adatbázis van. Az egyikben: ki küldte, kinek küldte és készít egy "csoport" mezőt (random szám). A másikban ez a "csoport" mező, ki küldte (fromid) és az üzenet.
Számomra ez bonyolúlt működésű, probálkoztam egy sajáttal de nem igazán jött össze.
Hozzáértés és a megfelelő eszközök használata
vs
"Csak a file io-ig jutottam a tananyagban, úgyhogy azzal kell csetet írni"
Még mindig nincs kész a chat???
Május óta??
Tudom, hogy régi kérdés, viszont ettől függetlenül érdekel a válasz.
A kérdés abba az irányba szeretett volna menni, hogy Big Data-ként hogyan lehet megtervezni egy chatet? Például egy nagyobb cég/fórum, ahol másodpercenként 1000 üzenet megy, ott egyetlen tábla jó megoldás lehet (id|ki|kinek|msg|datum stb.)? Esetleg az adatbázisban megírni (akár tárolt eljárással), hogy X időnként/adatonként csoportosítsa felhasználók szerint, majd valamiféle indexeléssel/külön táblákkal megoldani? Tudom, hatalmas és rengeteg vasról beszélünk egy ilyen rendszernél, de mégis hogy érdemes nekiállni?
#19 Adatbázist tekintve még ahhoz is megfelel a MySQL-InnoDB, ennyinél már érdemes lehet elfelejteni az ACID -ot és csak pár másodpercenként menteni az adatot (mármint az InnoDB logba).
Nyilván érdemes websocketet használni AJAX helyett, ezzel spórolhatsz egy adatbázis readet amikor új üzenetet kap a címzett (ha online).
Ha az üzenetek nem törölhetőek az ő oldalukon, akkor localstoragebe teszed a régieket (X mennyiséget) és user-user párosonként egy "utolsó érkezett/küldött üzenet timestamp" -et egy külön táblába tenni, ha ez egyezik a localstorages üzenet dátumával akkor szintén spórolsz pár queryt.
Ha ez például egy munkahelyi chat lenne ahol tudod, hogy X időben mindenki online, akkor érdemes lehet RAMban tárolni (pl REDIS-el), és az adatbázist csak backupnak használni.
De ha ez a feltételezett "1000/sec" üzenet egy közösségi oldalon történik több százezer ember miatt (tehát inkonzisztens, hogy ki-mikor használja), akkor már értelmetlen a memcache.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!