Kom ihåg mig?
Home Menu

Menu


Fråga om AJAX

 
Ämnesverktyg Visningsalternativ
Oläst 2013-01-05, 16:37 #1
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
Standard Fråga om AJAX

Om jag typ har ett ett ställe där man kan skriva med varandra. låt oss säga en chat.

Då har jag med ajax kanske varje sekund kallat på ett skript som gjort en fråga till databasen och hämtade de senaste 10 insatta radera.

Men då har ja funderat på om man kan vi varje ny rad man skriver så skriver man samma sak till en fil, chat.txt

och sen med ajax hämtar man innehåll från chat.txt varje sekund.

Det borde väl vara mycket lättare, alltså inte lika krävande? Tänker ja rätt?
secag är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-05, 17:26 #2
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Det blir nog helt fel för då har du ett extra steg och dessutom är inte chat.txt unikt för varje användare elle aktuellt, så det verkar inte vara någon bra idé.

Du skulle behöva kalla filen chat[user123].txt, chat[user124].txt, chat[user125].txt... och därmed få tusentals små filer på disken som du måste rensa bort.

Databasen är ju orginalet av informationen så du behöver hämta den därifrån. Däremo skulle du kunna kolla om det finns en ny post i databasen med en tidstämpel som är senare än den när du senast hämtade texterna från databasen. Om det fins nya postningar så slår du en hämtningsfråga, annars låter du texten på skärmen ligga kvar oförändrad.

Senast redigerad av Conny Westh den 2013-01-05 klockan 17:35
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-05, 17:44 #3
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
det behöver inte vara unikt :P det ska inte vara precis som en chat. tänk dig ett forum med en tråd.
secag är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-05, 18:05 #4
CotopaXi CotopaXi är inte uppkopplad
Flitig postare
 
Reg.datum: Nov 2004
Inlägg: 321
CotopaXi CotopaXi är inte uppkopplad
Flitig postare
 
Reg.datum: Nov 2004
Inlägg: 321
En bättre teknik att göra detta på är ju att använda push, inte pull som ajax gör.

Titta t.ex på http://meteor.com
CotopaXi är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-05, 19:11 #5
P3N P3N är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2010
Inlägg: 331
P3N P3N är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2010
Inlägg: 331
Det funkar ju att använda ajax. Fördelen är väl att det går snabbt att göra. Nackdelarna är däremot rätt många. Men kan man leva med nån sekunds försening och inte har så många användare så funkar det ju helt ok.
Hänger bara hårdvara och bandbredd med... Kan man ju alltid ha fler användare. Men det är inte optimalt. Men för en sida med få besökare funkar det fint. Blir det fler besökare kan man ju öka tiden mellan uppdateringarna om man kan leva med det. Räknar du med många användare så googla "node.js" t.ex finns en del olika system som använder push istället precis som CotopaXi sa.

Jag hjälper en chatt ibland som använder ajax... Runt 200 inne samtidigt funkar helt ok. Men beror ju som sagt helt och hållet på hårdvara och bandbredd.
P3N är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-05, 20:59 #6
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
node.js tycker jag ser helt fantastiskt ut men jag har haft en jäkla tid att försöka installera det och sen köra. Det funkar inte :/.

Men mitt sätt som ja beskrev det gör ju att på varje request så hämtar en innehål ur en fil och inte en fråga till databasen. Det borde väl vara såååå mycket snabbare?
secag är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-05, 21:27 #7
P3N P3N är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2010
Inlägg: 331
P3N P3N är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2010
Inlägg: 331
Nja, är mer eller mindre de samma. Handlar mer om datamängd då. Databaser är snabba.

Däremot får du se upp så att du inte ställer till det när det skrivs i filen. Så inte två försöker skriva samtidigt. Dvs lås filen, öppna och skriv, spara filen och sen går det att skriva i filen igen.
P3N är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-06, 10:52 #8
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Ursprungligen postat av secag Visa inlägg
node.js tycker jag ser helt fantastiskt ut men jag har haft en jäkla tid att försöka installera det och sen köra. Det funkar inte :/.

Men mitt sätt som ja beskrev det gör ju att på varje request så hämtar en innehål ur en fil och inte en fråga till databasen. Det borde väl vara såååå mycket snabbare?
Om du tycker databasen är långsam så har du gjort något fel i designen. databaser är normalt mycket snabba och det är sällan man ens behöver fundera på att optimera med externa filer. jag har aldrig sett det behovet utom när du har stora bildfiler eller BLOBar som man ibland kan vinna på att lägga som lösa filer p ådisken i stället för i databasen, men det är extrema undantag. Som jag inte ser något nytta med i ditt fall.
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-06, 11:03 #9
Kimpo Kimpo är inte uppkopplad
Medlem
 
Reg.datum: Mar 2009
Inlägg: 185
Kimpo Kimpo är inte uppkopplad
Medlem
 
Reg.datum: Mar 2009
Inlägg: 185
ingen aning om vilken backendteknologi du kör men om du vill bygga en chat och kör .NET så kika på SignalR. Här är en site byggd i SignalR http://jabbr.net/
Kimpo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-01-06, 11:50 #10
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av secag Visa inlägg
node.js tycker jag ser helt fantastiskt ut men jag har haft en jäkla tid att försöka installera det och sen köra. Det funkar inte :/.

Men mitt sätt som ja beskrev det gör ju att på varje request så hämtar en innehål ur en fil och inte en fråga till databasen. Det borde väl vara såååå mycket snabbare?
Angående node.js kan du hitta en guide för precis din OS-version för att installera det. Att komma igång med websockets med node.js är också förvånansvärt lätt.

Använder du en push-teknologi istället så kommer en ny kommentar att pushas ut direkt till de andra i chatten och därmed inte behövas hämtas från databasen annat än om en ny användare ska få gammal chat-data (även här kan man eventuellt behålla en array i node.js som man skickar till nya klienter).

Måste du tvunget använda pull så skulle jag dock göra mig av med text-filen, du får en fördröjning på upp till 1.99s om reload och text-fil är max out of sync. Och om du vill halvera den fördröjningen genom att skriva alla uppdateringar direkt till text-filen så finns en viss risk att du korrumperar text-filen. Istället för text-filen borde du isåfall fundera över antingen en cache (memcache, apc etc) eller byta till en mycket lättare databas-lösning (se t ex Redis, Membase). Om du gör detta så kommer ditt val av pull att ge dig en första bottleneck i CPU eller RAM vid ditt dynamiska språk som PHP/Ruby/vadsom (förutsatt att du använder en bra webbserver).

Men som redan tidigare föreslagits, push är absolut bäst.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 23:38.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017