Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  AJAX, Reverse AJAX märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
andiweb
HV vaatleja

liitunud: 16.04.2003




sõnum 26.05.2009 20:43:07 AJAX, Reverse AJAX vasta tsitaadiga

Aretan siin ühte asja Google Maps API-t kasutades. Kuna seal tekib selline olukord, kus serveri poole pöördumisi tuleks hästi palju, sest kasutajaid on palju ja muutuvaid asju on palju, siis mõtlesin, et äkki saab niimoodi, et saadetakse iga kord kui midagi serveris muutub kõikidele kasutajatele ühe korraga teade, et midagi muutus. Nii ei peaks kõik kasutajad pidevalt natukese aja tagant küsima, kas midagi muutus.

Leidsin siis sellise asja nagu Reverse AJAX. PHP-le on olemas veel selline tore Reverse AJAX framework nagu XAJA. Ühes foorumis aga räägiti, et Reverse AJAX on hoopis rohkem resursinõudlikum kui tavaline AJAX. Keegi oskab öelda kas sellel on ka mingi tõepõhi all? Või oskab keegi välja pakkuda viisi kuidas ma saaks oma probleemi kuidagi teistmoodi lahendada?
tagasi üles
vaata kasutaja infot saada privaatsõnum
linnumees
HV kasutaja

liitunud: 15.06.2005




sõnum 26.05.2009 23:01:44 vasta tsitaadiga

Comet märksõnaks.

Igasugune ressursikasutus oleneb rakendusest ja seda pead Sa ISE testima ja katsetama, mitte uskuma mingit suvalist jorssi kusagil foorumis, kellest Sa midagi ei tea.

Ilma konkreetse rakenduse kirjelduseta on muidugi raske täpsemini aidata.
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andiweb
HV vaatleja

liitunud: 16.04.2003




sõnum 27.05.2009 10:23:10 vasta tsitaadiga

linnumees kirjutas:
Comet märksõnaks.

Igasugune ressursikasutus oleneb rakendusest ja seda pead Sa ISE testima ja katsetama, mitte uskuma mingit suvalist jorssi kusagil foorumis, kellest Sa midagi ei tea.

Ilma konkreetse rakenduse kirjelduseta on muidugi raske täpsemini aidata.


Cometini jõudsin eile õhtul ise ka, uurin ja vaatan.

Rakenduse kirjeldusest:

Google Mapsil põhinev rakendus. Kasutajad saavad lisada kaardile markereid, muuta nende asukohtasid.

Põhimõteliselt on rakenduses kaks asja, mis pidevalt muutub: Markerite asukoht ja markeritele klikates avaneva infoakna html.

Niipalju kui ma aru olen saanud, siis Comet hoiab pidevalt ühendust serveri ja kliendi vahel lahti, kui midagi serveris uut juhtub, siis annab ka kliendile teada. Suurim probleem selle asja juures on vist see, et brauserid ei luba just eriti palju ühendusi ühe hosti kohta lahti hoida. Kui kasutaja peaks mu lehel juhuslikult mitmel lehel korraga ühendust lahti hoidma, siis võib asi kinni joosta.
tagasi üles
vaata kasutaja infot saada privaatsõnum
linnumees
HV kasutaja

liitunud: 15.06.2005




sõnum 27.05.2009 15:21:45 vasta tsitaadiga

Palju Sul neid markereid on? Võib-olla on üldse mõttekam neid kõiki pidevalt korraga uuendada, teed näiteks mingi staatilise faili selle jaoks ja uuendad mingi aja tagant, kasutad mõnda reverse proxyt või midagi sarnast, et Su server maha ei kooleks.

Kui ikkagi tahad asja Cometi baasil teha, on Sul ilmselt mõttekas kirjutada serveri poole mingi proge, mis hoiab kõigi kasutajatega ühendusi lahti, mingi aja tagant kontrollib uuendusi ning saadab kõigile korraga laiali. Iga kliendi kohta hakata andmebaasist pärima läheb ilmselt liiga ressursinõudlikuks, aga see oleneb jällegi, palju Sul objekte ja kasutajaid on ning kus Su rakendus üldse paikneb.

Ma ise pole veel tegelikult Cometi põhise rakenduseni jõudnud, kuigi kunagi sai seda üpris korralikult katsetatud mingi asja jaoks...
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 28.05.2009 13:38:25 vasta tsitaadiga

Kas kõik kasutajad näevad samu markereid ? Või igal kasutajal eraldi ? Ja kui tihti andmed muutuvad ning kui oluline on et kasutajad kohe näevad ?

Kui kõik näevad sama infot siis soovitaks sellist lähenemist, et salvestad sisu kuskile staatilisse javascript faili mida siis kasutajate browser küsib (fail.js?time=12233342342 stiilis kus selle time väärtuse paned browseri javascriptis alati kaasa et saaks kindlalt uusima sisu).
Kui sobib see et minuti tagant info muutus jõuab kasutajateni, siis paned serverisse cron'ga iga minuti tagant php skripti jooksma mis seda js faili üks kord minutis uuendab. Browseris paned infi näiteks iga 30 sekundi tagant küsima ja olemas.
Kui vaja täpsemalt infot edastada, siis pane ikkagi cron'ga skript tööle, aga skriptis pane 1 minuti jooksul mitu korda lihtsalt seda javascript faili uuendama ja kasutad usleep käsku et täpselt iga 5 sekundi tagant uuendada.
NB! kui sul on palju kasutajaid (sellest ka optimiseerimise teema) siis oleks hea .htaccess failiga antud javascript faili puhul Connection: close header kaasa panna, et iga kasutaja jaoks ühendust ripakile ei jääks ja minimaalselt serverit koormaks.

Kui aga igal kasutajal eraldi info vastavalt tema profiilile/õigustele vms, siis on juba keerukam sellist lahendust teha.

Enda kogemuste põhjal või öelda et see Comet/reverse ajax/push lahendus on hea siis, kui sul on reaalajas kindlasti uuendamist vajav info + vähe kasutajaid või suurtes kogustes raha mida serverisse investeerida. Väiksema arvu kasutajatega funktsioneerib asi kenasti, suurema hulga kasutajate puhul aga on need lahtiolevad ühendused pigem peavaluks ja serverile väga suureks koormuseks ja tavalise veebiserveri tõmbavad ülikiirelt umbe ära. Näiteks võib tuua et hiljutises sendioksjoni buumis kõik peale mini.osta.ee kasutasid tavalist lähenemist, et browserist küsitakse uut infot. Ja mini.osta.ee vaevles päris pikalt oma selle lahendusega mis pidevalt jamas (ühendus kukkus maha ja siis enam ei funganud miski normaalselt).

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
andiweb
HV vaatleja

liitunud: 16.04.2003




sõnum 28.05.2009 22:15:59 vasta tsitaadiga

inzinz kirjutas:
Kas kõik kasutajad näevad samu markereid ? Või igal kasutajal eraldi ? Ja kui tihti andmed muutuvad ning kui oluline on et kasutajad kohe näevad ?

Kui kõik näevad sama infot siis soovitaks sellist lähenemist, et salvestad sisu kuskile staatilisse javascript faili mida siis kasutajate browser küsib (fail.js?time=12233342342 stiilis kus selle time väärtuse paned browseri javascriptis alati kaasa et saaks kindlalt uusima sisu).
Kui sobib see et minuti tagant info muutus jõuab kasutajateni, siis paned serverisse cron'ga iga minuti tagant php skripti jooksma mis seda js faili üks kord minutis uuendab. Browseris paned infi näiteks iga 30 sekundi tagant küsima ja olemas.
Kui vaja täpsemalt infot edastada, siis pane ikkagi cron'ga skript tööle, aga skriptis pane 1 minuti jooksul mitu korda lihtsalt seda javascript faili uuendama ja kasutad usleep käsku et täpselt iga 5 sekundi tagant uuendada.
NB! kui sul on palju kasutajaid (sellest ka optimiseerimise teema) siis oleks hea .htaccess failiga antud javascript faili puhul Connection: close header kaasa panna, et iga kasutaja jaoks ühendust ripakile ei jääks ja minimaalselt serverit koormaks.

Kui aga igal kasutajal eraldi info vastavalt tema profiilile/õigustele vms, siis on juba keerukam sellist lahendust teha.

Enda kogemuste põhjal või öelda et see Comet/reverse ajax/push lahendus on hea siis, kui sul on reaalajas kindlasti uuendamist vajav info + vähe kasutajaid või suurtes kogustes raha mida serverisse investeerida. Väiksema arvu kasutajatega funktsioneerib asi kenasti, suurema hulga kasutajate puhul aga on need lahtiolevad ühendused pigem peavaluks ja serverile väga suureks koormuseks ja tavalise veebiserveri tõmbavad ülikiirelt umbe ära. Näiteks võib tuua et hiljutises sendioksjoni buumis kõik peale mini.osta.ee kasutasid tavalist lähenemist, et browserist küsitakse uut infot. Ja mini.osta.ee vaevles päris pikalt oma selle lahendusega mis pidevalt jamas (ühendus kukkus maha ja siis enam ei funganud miski normaalselt).


Tänud heade nõuannete eest. Sain ise ka aru, et see Comet'i asi hakkaks mu serverit hoopis rohkem koormama kui sellest kasu oleks. Mingil määral saan kindlasti seda sinu poolt staatilise javascripti faili asja kasutada, kuid palju on mul ka sellist infot, mis on igal kasutajal erinev.
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  AJAX, Reverse AJAX
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.