PHP Chat logika?

Figyelt kérdés

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.


2016. máj. 2. 18:27
1 2
 11/20 anonim ***** válasza:
0%
Sokkal egyszerűbb ha txt fájlba mented a beszélgetést. Vagy minden megnyitott beszélgetésnek létrehozol egy új fájlt, vagy ha elkezd valaki csevegni akkor megvizsgálod, hogy volt-e már a két felhasználó között beszélgetés, ha igen, akkor megnyitod azt a txt-t.
2016. aug. 21. 13:27
Hasznos számodra ez a válasz?
 12/20 anonim ***** válasza:
Persze, mint ahogy az is, hogy az oldalakat táblázatos layouttal csináljuk meg. Egyébként gratulálok az időgéphez!
2016. aug. 21. 13:57
Hasznos számodra ez a válasz?
 13/20 anonim ***** válasza:
0%
Akkor légy oly kedves és indokold meg, hogy miért jobb leterhelni az adatbázist mikor a szerveren tárolt elemekkel ugyanúgy meg lehet oldani.
2016. aug. 21. 16:01
Hasznos számodra ez a válasz?
 14/20 anonim válasza:
Mert az adatbázis erre való, a txt fájlok meg nem.
2016. aug. 28. 22:34
Hasznos számodra ez a válasz?
 15/20 anonim ***** válasza:
Érdekes hozzáállás, de persze lelked rajta.
2016. aug. 29. 12:30
Hasznos számodra ez a válasz?
 16/20 anonim válasza:

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"

2016. aug. 29. 12:49
Hasznos számodra ez a válasz?
 17/20 A kérdező kommentje:
Engem is érdekelne. Gondolom úgy érti a txt-t, hogy nincs rengeteg sor (én chatem alapján leirt) és hamarabb megtalálja ki kivel beszélt, így gyorsabban kiolvassa.
2016. aug. 29. 14:50
 18/20 anonim ***** válasza:

Még mindig nincs kész a chat???

Május óta??

2016. szept. 15. 07:18
Hasznos számodra ez a válasz?
 19/20 A kérdező kommentje:

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?

2020. jan. 10. 18:57
 20/20 anonim ***** válasza:

#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.

2020. márc. 23. 11:23
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!