Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 3.243 pregleda

Najnovija ↓

PHP listener/socket server na odredjenom portu 15.08.2012. u 20:06 · pre 173 meseca #1
U pitanju je uređaj koji očitava RF tagove i nakačen je na LAN i može se podesiti da podatke šalje samo jednu ip adresu, recimo na portu 11011. Potrebno je da ti podaci odlaze u web aplikaciju. Ima li neko dobar predlog kako to izvesti? Možda u kombinaciji PHPa sa još nekom aplikacijom?
Ako stavim skriptu u beskonačni while CPU opterećenje će biti preveliko ali mislim ako bih koristio sleep funkciju moglo bi da dođe do toga da neki paketi ne budu primljeni zato što je sleep aktivan? RF tagovi šalju "hearbeat" od 1.5 do 5 sekundi, u tom rasponu.
Evo rešenja za socket server koje sam mislio da upotrebim kao primer: http://devzone.zend.com/209/writing-socket-servers-in-php/
Ne znam da li je moguće od toga napraviti persistent konekciju kao u Comet aplikaciji poput rešenja iz ovog tutorijala: http://www.zeitoun.net/articles/comet_and_php/start
Re: PHP listener/socket server na odredjenom portu 15.08.2012. u 20:22 · pre 173 meseca #2
Najbolje resenje po meni bi bila standalone aplikacija koja ce hvatati konekciju/e i primljene informacije smestati u bazu.
Persistant konekcije su pa mnogo bolje, jer ce se program pokretati samo jednom. Cim stigne podatak smesti ga u bazu.
Nakon toga s podacima iz baze mozes da radis sta zelis, a izmedju ostalog i da ih prikazes na webu. Znaci, aplikacija + php + baza.

Edit dopuna: Za dodatnom aplikacijom sam jer ce se php ugasiti nakon primanja podataka.
Potpis
LOL
Re: PHP listener/socket server na odredjenom portu 15.08.2012. u 20:29 · pre 173 meseca #3
Ja imam neko osnovno znanje Jave da li je putem nje moguće napraviti aplikaciju koja će da vrši taj posao?
Takođe našao sam i ovaj tutorijal, ali nisam siguran da li radi posao koji meni treba. [url=mailto:http://www.devshed.com/c/a/PHP/Socket-Programming-With-PHP/]http://www.devshed.com/c/a/PHP/Socket-Programming-With-PHP/[/url] ali da li može da radi puno radno vreme bez prestanka?
Re: PHP listener/socket server na odredjenom portu 15.08.2012. u 20:47 · pre 173 meseca #4
Zasto mislis da bi PHP aplikacija napravila preveliki load ako bi se stalno izvrsavala?

Evo na primer, ja imam irc bota koji ide preko socket-a, izvrsava se kao servis, radi 24/7 bez problema i load retko kad predje 1 a nije samo on na tom vps-u (bot se nalazi na preko 70-ak kanala, ima bar 50-ak komandi). U pocetku sam malo imao problema sa njim dok nisam pocistio sve bug-ove i mem leak-ove, sad ga preventivno restartujem jednom u mesec dana i to je to :)
Potpis
...
Re: PHP listener/socket server na odredjenom portu 15.08.2012. u 21:28 · pre 173 meseca #5
Ako želiš da sve napraviš u PHP-u, pisaćeš PHP skriptu koja se izvršava u komandnoj liniji. Nakon što podigneš „slušajući“ socket koristiš select() koji blokira program dok ne dođe podatak na socketu. Na taj način iako je stalno pokrenut veći deo vremena program drema i čeka da primi podatke.
Potpis
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Re: PHP listener/socket server na odredjenom portu 16.08.2012. u 18:37 · pre 173 meseca #6
Gdje ćeš bolji listener od web servera?!

Da li se taj tvoj uređaj može konfigurisati šta će i na koji ip, port slati? Ukoliko može udri HTTP protokol!

npr. obo neka bubne na web server a ti onda znaš kako ćeš to obradidi!

Code:

POST /request.php HTTP/1.1
Accept: application/jsonrequest
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10
Content-Encoding: identity
Content-Length: 438
Content-Type: application/jsonrequest
Host: www.mojhost.org

{"deviceID":"A0001","time":"16.08.2012 18:43:11","data":"UE9TVCAvcmVxdWVzdCBIVFRQLzEuMQ0KQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29ucmVxdWVzdA0KVXNlci1BZ2VudDogTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yLjEwKSBHZWNrby8yMDEwMDkyMiBVYnVudHUvMTAuMTAgKG1hdmVyaWNrKSBGaXJlZm94LzMuNi4xMA0KQ29udGVudC1FbmNvZGluZzogaWRlbnRpdHkNCkNvbnRlbnQtTGVuZ3RoOiA3Mg0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29ucmVxdWVzdA0KSG9zdDogd3d3Lm1vamhvc3Qub3J"}


Probaj da se igraš telnetom pa otvori konekciju na web server najcesce port 80 pa napravi koji request.
Re: PHP listener/socket server na odredjenom portu 16.08.2012. u 22:03 · pre 173 meseca #8
Uređaj ne podržava HTTP protokol, pa zapravo nigde se ne spominje u dokumentaciji, navodno u pitanju je proizvođačev interni protokol. Pokušaću da ostvarim telnet konekciju ili da stavim neki packet sniffer na njihovu aplikaciju i vidim kako podaci izgledaju u sirovom obliku.
Hvala za ideju o izvršavanju iz komandne linije pretpostavio sam da je jedini način da skripta konstantno radi jeste da koristim beskonačni while a to gotovo nikad ne zvuči kao dobro rešenje uz apache ili neki drugi web server.
Re: PHP listener/socket server na odredjenom portu 16.08.2012. u 23:16 · pre 173 meseca #9
Pogledaj primer na http://devzone.zend.com/209/wr...ocket-servers-in-php/#Heading7

Postoji beskonačna petlja while(true) ali u vrhu petlje je poziv socket_select() funkcije. Ova funkcija blokira dalje izvršavanje sve dok se ne pojavi novi klijent ili postojeći klijent pošalje podatke ili prekine vezu. Na ovaj način tvoja petlja bude na čekanju, a ne iscrpljuje procesor.

Ako će postojati samo jedan klijent pa je select nepotreban, možeš za isti trik da prebaciš socket u blokirajući režim tako da pozivi ka socket_accept() i socket_read() blokiraju dalje izvršavanje sve dok se ne zakači klijent, odnosno klijent pošalje podatke ili prekine vezu.
Potpis
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme