Terve.
Nyt voi tulla tyhmääkin kysymystä, pahoitteluni tästä. php koodin tekeminen onnistuu kohtuullisesti mutta muuten tuo maailma on kohtuullisen hukassa.
Eli olen tehnyt yksinkertaisen chat-ohjelman käyttäen hyväksi putkastakin löytyviä vinkkejä.
Eli aina kun tulee uusi viesti, se talletetaan viestit. txt tiedostoon. Viestit tuosta tiedostosta tulostetaan parin sekunnin välein omaan iframeensa.
Nyt kun kavereiden kanssa innostutaan joka kaunis perjantai tuota koodia pikkuhumalassa käyttämään niin siinä saattaa olla reilut kymmenen ihmistä paikalla.
1. Kuinka paljon tuollainen kuormittaa, jos tosiaan on vaikka kymmenen ihmistä paikalla? Kun päivitystahti on 2s niin keskiarvolta 0.2s välein siis ajetaan funktiota joka lähettää päivitetyn viestit.txt jollekin paikalla olijalle.
2. Ilmeisesti ei phpllä onnistu niin että mikäli ei ole viestit lisääntyneet viimeisen päivittämisen jälkeen niin sitten ei päivitetä? Nyt päivitys "ohjataan" näin
echo "<meta http-equiv=\"refresh\" content=\"2\">";
3. Kaistaahan tuollainen päivittäminen ei juurikaan vie, kun rivejä tulostetaan 20 uusinta? Rivin maksimipituus on kuitenkin 160 merkkiä?
E.K.Virtanen
1. Sanoisin, että prosarin kuormitusviisari ei juuri värähdä tuollaisesta.
3. - | | - kaistan kuormitusviisari - | | -
2. Ei
Näin ajattelinkin mutta piti kysyä ettei tule tehtyä tyhmyyksiä.
Kiitoksia ajv.
Perinteine tapa tehdä www-chat on tämä, että laitetaan selain hakemaan sivua, jota sitten ladataan rivi kerrallaan. Sinänsähän moinen tapa on aikamoinen viritys, mutta hyvä puoli siinä on, ettei kaistaa mene hukkaan. Nykyaikainen tapa voisi olla hakea uusia rivejä Ajaxilla.
Sinänsä tässä tapauksessa asialla ei varmaan ole mitään väliä, mutta meneehän tuossa kaistaa hukkaan kun samat rivit haetaan 2s välein koko ajan uudestaan (siis olettaen ettei tekstiä kirjoitella 10riviä/s vauhtia koko ajan)
Terve Grez.
Tosiaan tuota phptä osaan sikseen väännellä että yksinkertainen "chat" onnistuu. Idea on että kävijän koneella ei ajeta mitään ylimääräistä ja kaikkia java virityksiä vältellään vaikka purkkakoodin voimalla.
Kyse on kuitenkin muutaman henkilön chatistä jossa ollaan kun jaksetaan. Tämähän ei kuluta "turhaa" kaistaa siinä mielessä että jos chatissä ei ole ketään paikalla niin silloin ei ole selainta mitä päivittää.
Voisihan jotain purkkaa miettiä että jos esim. on hiljaista niin tuo päivitys vauhti putoaa? Esim. jos viimeisestä viestistä on >30s niin
echo "<meta http-equiv=\"refresh\" content=\"2\">";
muuttuukin
echo "<meta http-equiv=\"refresh\" content=\"5\">";
Vai meneekö tuo sitten jo turhankin purkaksi? Ideoita otan mielelläni kun täällä kuitenkin on tässä asiassa minua monta kertaa fiksumpaa porukkaa :)
Siis kuten sanoin, niin tuolla kaistan kulutuksella ei tässä tapauksessa ole varmastikaan mitään merkitystä.
Totesin vaan yleisesti, että jos olisi isosta järjestelmästä kysymys (vaikka 10000 käyttäjää) niin tuo tapa kuluttaisi kaistaa hukkaan. Toisaalta ainakin itse tykkään jos chatissa voi skrollata enemmänkin taakse päin kuin 20 riviä. Tässä tapauksessa esim. Ajaxilla uusien rivien hakeminen ja lisääminen loppuun (tai alkuun) voisi olla tehokkaampaa ja silti chattihistoria voisi kasvaa miten pitkäksi tahansa.
Tuolle päivitysnopeuden hidastamiselle ei sinun tapauksessasi varmasti ole mitään tarvetta ja sehän myös lisäisi latenssia.
Tuolla perinteisellä WWW-chat systeemillähän käyttäjän koneelle ei myöskään tarvitse asentaa yhtään mitään, mutta se ei varmaankaan ole ihan standardinmukaista lähettää html-sivua, joka ei pääty koskaan, vaikka taitaakin toimia suunnilleen kaikilla selaimilla (tosin joillakin vaatii vähän kikkailua). Sinänsä PHP:llähän tässä lähetymistavassa on ongelmana, että jokaiselle käyttäjälle jää PHP-prosessi auki. Pienessä mittakaavassa se ei luultavasti olisi ongelma. Isommassa mittakaavassa ongelmaksi tullee, että palvelimella täytyy varata portti jokaiselle käyttäjälle, eli ne loppuvat kesken jos on yli 65000 käyttäjää.
Terve grez.
Tulipa opittua taas hieman :) Kiitoksia.
Aion asettaa maksimiksi 20 henkilöä jonka jälkeen ei päästetä ketään sisään joten siinä mielessä ei pitäisi kait porttien loppua kesken.
Olenko ymmärtänyt nyt sitten tämän
echo "<meta http-equiv=\"refresh\" content=\"2\">";
idean väärin kun olen käsittänyt että se vain "ohjeistaa" käyttäjän selainta päivittämään iframessa olevan sivun tietyin väliajoin, eli php prosessi suoritetaan loppuun?
Olet ymmärtänyt oikein. Puhuin tuossa PHP prosessin auki jäämisessä siitä kokonaan toisesta tavasta ("perinteisestä WWW-chatista"), jossa HTML-sivu jätetään auki, eli sitä ei uudelleenlatailla ollenkaan.
Ok, minulla on luetun ymmärtämisessä ongelmia ;)
Sellaisen kysymyksen vielä heittäisin tähän että on pientä ongelmaa tuon kanssa että ketä on vielä paikalla.
Nyt ajattelin tehdä niin että aina kun chattailija heittää juttua kanavalle, hänen ns. time keksinsä päivitetään kyseiseen aikaan +30min.
Pikaisesti ajateltuna tämä on helppo keino seurata kauanko viimeisestä viestistä on kulunut? Vaan miten softa tätä sitten seuraa onkin eri juttu.
Mietein tuossa että jos softa vaikka aina 10min välein kävisi tiedoston läpi jonne on tallennettu kävijöiden viimeiset viestit, ja jos aikaa olisi kulunut >30min niin nimi poistetaan listalta joka näyttää paikalla olijat.
Tietysti pitää tehdä mahdollisuus poistua "oikein" myös, eli painamalla "Poistu" joka hoitaa ruljanssin samantien ja poistaa myös keksit kävijältä.
Mennäänkö takapuoli edellä puuhun?
Toisaalta jos kerran 2 s välein ladataan tuo lukuikkuna, niin eikö se paikallaolo voisi päättyä huomattavasti nopeamminkin kuin 30 minuutissa. Tyyliin jos ei lukuikkunaa ladata 30 sekuntiin, niin ei varmaankaan ole enää paikalla.
Aivan totta. On jo sen verran pää sekaisin että järki ei juokse pätkääkään :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.