Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

PHP listener/socket server na odredjenom portu

[es] :: PHP :: PHP listener/socket server na odredjenom portu

[ Pregleda: 1857 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Alexxandar
Aleksandar Jovanović
Freelancer/Part time developer
127.0.0.1

Član broj: 16375
Poruke: 84
*.cpe.vektor.net.



+59 Profil

icon PHP listener/socket server na odredjenom portu15.08.2012. u 19:06 - pre 104 meseci
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
 
Odgovor na temu

cyBerManIA
I ovo T ono
Space

Član broj: 25195
Poruke: 698
*.ptt.rs.

Sajt: www.facebook.com/cyberman..


+263 Profil

icon Re: PHP listener/socket server na odredjenom portu15.08.2012. u 19:22 - pre 104 meseci
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.
 
Odgovor na temu

Alexxandar
Aleksandar Jovanović
Freelancer/Part time developer
127.0.0.1

Član broj: 16375
Poruke: 84
*.cpe.vektor.net.



+59 Profil

icon Re: PHP listener/socket server na odredjenom portu15.08.2012. u 19:29 - pre 104 meseci
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?
 
Odgovor na temu

Nemke_BG

Član broj: 163822
Poruke: 341
*.dynamic.sbb.rs.

Jabber: Nemke_BG@elitesecurity.org
Sajt: https://www.nmdesign.rs


+45 Profil

icon Re: PHP listener/socket server na odredjenom portu15.08.2012. u 19:47 - pre 104 meseci
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
...
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: PHP listener/socket server na odredjenom portu15.08.2012. u 20:28 - pre 104 meseci
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.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
..ppoe.dyn.broadband.blic.net.



+27 Profil

icon Re: PHP listener/socket server na odredjenom portu16.08.2012. u 17:37 - pre 104 meseci
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.
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: PHP listener/socket server na odredjenom portu16.08.2012. u 17:52 - pre 104 meseci
Naravno, ako taj hardver može da pošalje HTTP zahtev dovoljno ga je uputiti na adresu PHP skripte.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

Alexxandar
Aleksandar Jovanović
Freelancer/Part time developer
127.0.0.1

Član broj: 16375
Poruke: 84
92.244.146.*



+59 Profil

icon Re: PHP listener/socket server na odredjenom portu16.08.2012. u 21:03 - pre 104 meseci
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.
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: PHP listener/socket server na odredjenom portu16.08.2012. u 22:16 - pre 104 meseci
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.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

[es] :: PHP :: PHP listener/socket server na odredjenom portu

[ Pregleda: 1857 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.