bigspy backend
http://labs.digg.com/bigspy/
imam slican zahtjev za napravit. dakle, kada korisnik napise novi tekst (ili je neki tekst dobio novi glas, ili, itd itd...), on se pojavljuje u listi na vrhu. kako ovome pristupiti? ideje? cisto generalno... |
Hint: AJAX
|
Načelno, realizacija je samo flavour web-chata.
|
moze li malo detaljnije?
konkretno, kako flash 'gleda' kad se pojavljuje novi tekst? |
Klijent svakih XX (mili)sekundi salje serveru poziv tipa: "ima li neki novi podatak za prikazati"?
Server odgovara "Nema". I opet: "Nema". I onda "Nema pa nema". Odjednom se desi da ima. I server kaze: "Ej stani, imam nesto za tebe". Klijent onda kaze "Super, hvala, sad cu ga prikazati". I tako ukrug. Sve ostalo su nijanse. |
A valjda ti je jasno da za praksu moras da se pomucis.
:) |
mislim da ovo preko digg-a funcionise preko XML socket-a ....
postoje x nacina da se ovo resi |
nisam siguran da je konstantno cimanje servera idealno resenje... ovakve stvari su pre za COMET tehnologiju sa socket serverom... otvoris konekciju i drzis je otvorenu, i kad se nesto pojavi server salje klijentu podatke.. ovo nije zgodno za klasican setup sa apachom ukoliko ima vise od 40-tak klijenata istovremeno, ali zato je super ako postoji mogucnost za zaseban socket server (ili lighttpd sa comet modulom, cini mi se da je tako nesto najavljeno da se pravi..)
|
Citat:
Citat:
eto ivanhoe rece (tnx) drzanje otvorenog socketa i slusanje...to mi zvuci kao dobra ideja... ima li mozda jos neki prijedlog? |
pa ako imalo poznaješ XMLSocket() u Flashu nece biti problema ... stvar je već do same realizacije ...
serverski deo možeš da rešiš čak i preko php-a ... što ne preporučujem ako je iole zahtevniji klijent |
Citat:
|
Pogledaj http://whos.amung.us/show/oqwq70li kroz Firebug.
Upitaj server svakih X sekundi (gde je X neko srednje vreme pojave novih tekstova). Stavi kesiranje sa strane servera na X sekundi da ne bi svaki put pitao bazu i formatirao JSON / HTML / XML ili sta vec vracas kao rezultat. |
Citat:
nixa, ovo server side rjesenje u PHPu za XMLSocket(), mislis na ono while(true) {} pa unutar toga slusanje socketa? ili nesto drugo? |
Citat:
|
da, neki scenario bi trebao biti: skripta koja objavljuje clanke, prilikom objave clanka salje u socket info o novom clanku a npr. XMLSocket() u Flashu 'sjedi i ceka' i odradi nesto kad podaci dodju...
ostaje pitanje kako da zavrtim PHP skriptu (koja glumi server) da se vrti beskonacno neovisno o script_execution_time... [edit: set_time_limit(0) izgleda rjesava stvar] |
jeste pogledali kako su oni to zaista resili :)
|
http://stamen.com/
Free Flash API toolkit http://code.google.com/p/diggflashdevkit/ Digg API homepage http://apidoc.digg.com/ super je sto ima i XML i JSON i Javascript i PHP seriajalizovane objekte kao primer service rezultata http://services.digg.com/stories/204...2Ecom%2Fbigspy |
nije tesko resiti klijenta, ovde je frka da se odradi serverski deo tako da kad ima dosta klijenata:
1) ne pojede svu memoriju 2) radi dovoljno brzo sa gomilom otvorenih socketa za razuman nivo saobracaja to nije mnogo tesko napisati u npr. perlu, ali naravno ne treba izmisljati toplu vodu, ima gomila (polu)gotovih resenja... kad smo vec kod ovoga, koji besplatni socket server bi vi preporucili ? |
bigspy nije na socketima, to je bila poenta mog posta
upravo tako se stedi memorija, mislim da bi digg prso kad bi morao da radi tako inace red5 je besplatan vrhunski socket server, radi i video i audio streaming itd. |
MrSteel, hvala na linkovima!
ipak najobicniji requesti? Citat:
Citat:
|
ti ispostuj formu ali u sustini i dalje radi LoadVars.load(URL) u flash-u
|
Citat:
Citat:
puno hvala svima jos jednom |
po pitanju server strane service moze imati vise korisnika nego socket
socket je trajna konekcija dok je service on request cak bi se moglo reci i da service request kao sto je digg moze imati neograniceno korisnika i to je naravno jedan od razloga sto su uradili servis, pored najvaznijeg koji je taj sto servis omogucava 3rd party developerima da odradjuju biznis i promovisu digg (i opet prosire broj korisnika / pregledaca digg-a) socket pak ima svoja ogranicenja u broju korisnika nakacenih, i nemoj koristiti PHP za to resenje ako se odlucis perl je super, java je super sta ti tacno zelis da uradis? OT: zanimljiv link, povezan sa ovim http://www.agiledelta.com/product_efx.html |
Citat:
Citat:
|
mislio sam sta tacno pravis :)
|
a, sorry :)
schema je: - korisnici na sajtu upisuju novi item (item je naslov+link) - korisnici mogu listati/komentirati poslane iteme - korisnicima se prikazuje lista zadnje dodanih (prica s ovog topica) itema recimo da je to neki osnovni okvir. |
Citat:
|
Citat:
pa za perl postoji dosta primera, postoje i gotovi moduli koji to rade, npr. POE ... Za php ne znam, nisam cuo da je neko pravio TCP server u php-u, mada verovatno moze. Problem sa php-om je ranije bio da on nije pravljen kao shell jezik, mada sad ima CLI, i to sto AFAIK trosi dosta cpu kad radi sa socketima (vise od perla) Sto se tice cometa u php, tu je obicno varijanta da se koristi apache, da se stavi set_timeout(0), i da se onda napravi beskonacna petlja tipa: PHP kôd:
@dee: Ne mogu da ti kazem tacne cifre sta je to "razumno opterecenje", nemam dovoljno iskustva sa tim, a i zavisi od kolicine memorije i raznih drugih podesavanja servera. Select funkcija koja se koristi za proveru otvorenih socketa se na nekim sistemima uspori preko 256 socketa (posto koristi neku binarnu mapu za mapiranja socketa, zaboravio sam detalje). Ono sto sam ja probao je perl TCP server baziran na POE modulu opterecen sa 50 klijenata i to je radilo odlicno (ne secam se tacno koji je server bio u pitanju, ali nije bio mnogo jak). Pitaj Zextru, seca se da je i on radio nesto sa POE i da je to super radilo. Sto se tice otvaranja socketa per request vs. per session, sve zavisi koliko cesto se radi refresh. Otvaranje socketa je "skupa" procedura, povecava saobracaj i opterecuje CPU i OS (isto je kao otvaranje fajlova), plus ako server forkuje procese za svaki zahtev to dodatno usporava sve i trosi resurse na gomilu otvorene dece, pa ako ces cesto da radis refresh apsolutno se ne isplati raskidati i uspostavljati vezu svaki put. Downside je da moras da imas dedicated server ako planiras da instaliras sopstveni TCP server, ne verujem da ce iko to da te pusti na komercijalnim hostinzima.. |
|
Citat:
- apache dobije zahtev, i prosledi ga nekom svom detetu na obradu. Ako nema dovoljno preforkovane dece, treba isforkovati novi apache proces - php modulu ucita i isparsira potrebne php skripte (a posto koriste wordpress to je tipa 5-10 includova, zavisi koliko pluginova imaju) - wordpress odradi sve potrebne upite na bazi (jedno bar 3-4) - ovaj njihov plugin procita sadrzaj direktorijuma, i inkluduje fajl sa vestima i to tako za svakog klijenta koji ima otvoren ajaxian u browseru... mozda sam ja staromodan, ali po meni je to daleko od optimalnog pristupa.. |
Pretpostavljam da kesiraju na serverskoj strani
|
Ajaxian inace radi jako jako sporo. Ovaj primer je za wp koji oni koriste, ako pises za neko tvoje custom resenje, siguran sam da se moze mnogo optimizovati...
|
hvala Blood!
vise nisam pametan majke mi :) cini se da imam dvije glavne varijante: 1) XMLSocket() sa necim na server strani. 2) svakih nekoliko sekundi LoadVars(url) iz flasha. URL u ovom slucaju moze biti obican txt fajl koji se pak update-a na svaki novi submit clanka, a Flash ga preuzima svakih x sekundi. ovo drugo mi se ipak, za sad, cini optmalnijim rjesenjem posto ne opterecuje server u smislu skripti, 'samo' otvaranje txt fajla i load varijabli. |
nije citanje iz txt fajla nego dinamicko generisanje sadrzaja na osnovu pristiglih podataka, a i ne mora biti tih podataka da bi ti skripta vratila nesto
ta skripta - web service - bi ti vracao XML oblik ili mozda i PHP serijalizovane podatke pa bi ih deserijalizovao na klijent strani odustani odmah od prve varijante to se ne radi tako, socket varijanta je za nesto sto treba realtime protok, treba uciti iz primera ozbiljnih kompanija, sem toga pitao si kako ovo razjasnili smo sad vec gubis vreme na bespotreno dvoumljenje kreni sa realizacijom pa ako zapnes rado cu ti pomoci ako ces raditi sa flashom onda pogledaj njihov free library za digg dosta ce ti se stvari razjasniti mada je malo komplikovano za pocetnika pa te mozda zbuni dakle moj savet, predji na delo, varijanta servis |
tako ce i biti...
hvala ti jos jednom! |
Vreme je GMT +2. Trenutno vreme je 22:42. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.