Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki,

 

Padiskuotokime, kaip geriausiai išspręsti šitokią užduoti.

 

Ar įmanoma, kokiu nors būdu, neperkraunant puslapio tikrinti, tarkim, ar duomenų bazėje yra naujų įrašų.

Mano variantas yra kas kažkiek laiko ajax'u siųsti užklausas į duombazę, patikrinti ir grąžinti atsakymą.

 

Ar yra kitokių variantų?

 

Diskutuojam.. ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

SELECT UPDATE_TIME
FROM   information_schema.tables
WHERE  TABLE_SCHEMA = 'dbname'
  AND TABLE_NAME = 'tabname'

Klausiama iš front end'inės pusės.

 

Priklausomai ka ir kaip tu nori elgtis su rezultatu. Siaip tam cron job yra naudojamas.

Ne, cronjob yra NE tokiems dalykams naudojamas.

 

Diskutuojam.. ;)

Kaip minėjo, geras variantas websockets. Bet jie dar nėra pilnai palaikomi. Yra aišku visokių libų su fallback'ais, bet tai labiau workaround'ai, negu geri sprendimai. Siųsti užklausą kas kažkiek laiko tai nėra blogas variantas. Dar geriau, jeigu protingai ją siųsti - pavyzdžiui, paprastai tai kas N sekundžių, bet sistema yra tokia, jog didelė tikimybė, kad po vieno įvykio bus ir kitas įvykis. Tai po įvykio pradėt siųsti kas M (M < N) sekundžių, po truputį didėjant vėl iki N, ar pan.

Taip pat yra dar tokia technologija comet - siekiama imituoti serverio kreipimąsį į naršyklę, o ne atvirkščiai. Dar vadinama server push. Kaip variantas - long polling, bet tam reikėtų sudėtingesnių sprendimų iš serverio pusės, negu paprastas apache + php, kad optimaliai veiktų. Metodo esmė - naršyklė kreipiasi į skriptą, kuris vykdomas labai ilgai (amžinas ciklas su sleep'u), arba tol, kol neatsitiks kažkoks įvykis (tavo atveju - naujo įrašo atsiradimas). Kai skript'as nudie'inamas, tai reiškia, kad įrašas atsirado ir padaroma nauja užklausa, kuri vėl vykdoma iki naujo įvykio (facebook'as sėkmingai naudoja šitą bajerį).

Redagavo vitalikaz
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Web Sockets nėra toks jau prastai palaikomas, o tuo labiau koks nors Socket.io.

 

Ajax pollinimas yra variantas, Comet – irgi, tik su pastaruoju ta bėda, kad PHP vykdymo modelis nėra asinchroninis. Nebent pats pasirašysi atskirą serveriuką, kuris būtų nepriklausomas nuo tavo kito setupo (apache ar nginx ir mod_php ar php-fpm). Nes su tradiciniu stacku tai turi kažkiek procesų ir jei visi užsiblokavę requestuose, tai nebeturi kur bėgti :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na kolkas iš pasiūlytų variantų priimtiniausias atrodo pollinimas. Aišku socket'ai gerai, bet žinant IE8 populiarumą dar ankstoka. Be to, jiem reikia kažkio ypatingo serverio. Ar aš kažką ne taip suprantu?

 

Ačiū už diskusijas, užvedėt ant kelio, nuo ko pradėti ieškoti, domėtis. ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na kolkas iš pasiūlytų variantų priimtiniausias atrodo pollinimas. Aišku socket'ai gerai, bet žinant IE8 populiarumą dar ankstoka. Be to, jiem reikia kažkio ypatingo serverio. Ar aš kažką ne taip suprantu?

Taip, Web Sockets nėra paprastas HTTP – tada jau reikia kokio nors serveriuko, kaip sakai. Įmanoma netgi ir PHP, yra tam keletas bibliotekų. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Naudok Ajax'a ir rami galva bus, o tai dabar bandot kazkoki drambli lipdyti is elementarios problemos.

 

http://www.websocket.org/img/poll-ws-compare.gif

 

Čia lygina long polling ir socket'us, jau nekalbant, apie ajax'o kas kažkiek laiko siunčiamas užklausas. Kaip matai šioje situacijoje drambys yra ajax. :)

Redagavo andriussss
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...