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

PHP Socket - prijem podataka sa nekog uredjaja

[es] :: PHP :: PHP Socket - prijem podataka sa nekog uredjaja

Strane: 1 2

[ Pregleda: 3739 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anebojsa
Bgd

Član broj: 16174
Poruke: 94
*.dynamic.isp.telekom.rs.



Profil

icon PHP Socket - prijem podataka sa nekog uredjaja17.01.2013. u 07:25 - pre 136 meseci
Programer sam u Visual Basic (VB) i potrebna mi je pomoc u PHPu

Imam neki uredjaj koji salje podatke tipa string na definisanu IP adresu i definisani port

Prvo sam napravio program u VB koji uz pomoc Winsock kontrole prima podatke sa tog uredjaja i salje ih u MySQL bazu koja je na serveru. ovo radi ali mi se ne dopada, celodnevna zauzetost racunara.

Potom sam napravio drugi program u VB (koji simulira taj uredjaj) koji uz pomoc Winsock kontrole salje podatke na maj sajt.
sad mi treba neka PHP stranica koja uz pomoc verovatno kontrole Socket prima taj string i prosledjuje ga u MySQL bazu

Znam da napravim konekciju ka MySQL bazi u PHP, samo mi je potreban deo za prijem podataka u odredjenu promenjljivu

$address jel IP mog racunara
$port jel mora samo 80

Code:

<?php
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$address = '';
$port = "";
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
}
if (socket_bind($sock, $address, $port) === false) {
    echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}
if (socket_listen($sock, 5) === false) {
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}
do {
    if (($msgsock = socket_accept($sock)) === false) {
        echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
        break;
    }
    do {
        if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
            echo "socket_read() failed: reason: " . socket_strerror(socket_last_error($msgsock)) . "\n";
            break 2;
        }
        if (!$buf = trim($buf)) {
            continue;
        }
        echo "$buf\n";
    } while (true);
    socket_close($msgsock);
} while (true);
socket_close($sock);
?>

 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.mrse.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja19.01.2013. u 23:32 - pre 136 meseci
http://devzone.zend.com/209/writing-socket-servers-in-php/
Tko leti vrijedi
 
Odgovor na temu

anebojsa
Bgd

Član broj: 16174
Poruke: 94
95.180.65.*



Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja20.01.2013. u 09:45 - pre 136 meseci
hvala na odgovoru
bio sam na ovoj stranici, probao nesto da napisem ali bezuspesno
moze li neka pomoc u par redova koda
 
Odgovor na temu

bantu

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



+27 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja20.01.2013. u 10:31 - pre 136 meseci
Da li ti pokusavas da izbjegnes taj svoj software u VB ili ti nije jasno kako na strani php obradis podatke koji stizu.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.mrse.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja20.01.2013. u 17:17 - pre 136 meseci
Citat:
Imam neki uredjaj koji salje podatke tipa string na definisanu IP adresu i definisani port.


Ovo je kljuc problema.

Ti treba da napises socket server (program koji "slusa" pritok informacija na nekom portu). Taj port naravno mora da bude neki koji je slobodan, ne 80 ili 443 itd.

Taj server mora da bude konstantno izvrsavan kao servis da bi mogao da slusa svo vreme. PHP je veoma los izbor za tu namenu, ali moze da posluzi.

Clanak koji sam poslao ti sve to objasnjava uz primer. Ako ti to nije dosta sta da ti radim :) Takodje nije resenje da ti neko da skript pa ti lepo iskopiras i posle zaboravis :) tako se ne uci.

I BTW Visual Basic??? VB 6 ili VB.net? Ako je VB6 pod hitno se modernizuj. 2013 je.


Tko leti vrijedi
 
Odgovor na temu

anebojsa
Bgd

Član broj: 16174
Poruke: 94
95.180.65.*



Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja20.01.2013. u 21:50 - pre 136 meseci
ne mislim da se bavim phpom
ja se bavim visual basicom od verzije 6 pa do 2010 za sada
ako mozete pomozite ako ne hvala u svakom slucaju
napravio sam program i u vb6 i u vb2010 i to radi
ali racunar bi bio zauzet celodnevno bez potrebe
imam sajt koji podrzava php i mysql
zato mi treba pomoc phpovaca
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja21.01.2013. u 08:18 - pre 136 meseci
Ja sam ti postavio pitanje: "da li želiš da izbjegneš taj svoj VB software" kako bi znao kako da ti pomognem.

Ukoliko ne želiš da ga izbjegneš riješenje je trivijalno.

Kada ti na tvoj software primiš neku poruku potrebno je samo da uradiš HTTP request prema svom serveru na kome se vrti php i mysql. Isto kao što to čini web browser. Nakon ovoga obrada podataka je krajnje trivijalna i završava se u par linija koda.

Ne znam o kom se uređaju radi, dosta uređaja omogućava direktno HTTP protokol, tako da postoji mogućnost čak i da izbjegneš taj svoj komad software-a.

Ukoliko pak želiš da ga izbjeneš VB dio, riješenje samo php - apache nije baš tako elegantno jer je server konstruisan da radi u HTTP request - response načinu rada. Tako da bilo kakvo odstupanje od ovoga predstavlja neku budževinu, i pitanje je kako će da radi pod opterećenjem.
 
Odgovor na temu

anebojsa
Bgd

Član broj: 16174
Poruke: 94
*.dynamic.isp.telekom.rs.



Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja21.01.2013. u 08:43 - pre 136 meseci
uredjaj je neki za gps koji salje podatke tipa string na odredjenu IP i odredjeni port koji ja mogu menjati
zelim da izbegnem moj program jer bi mi komp bio zauzet celodnevno
moj program radi tako sto prima podatke sa tog uredjaja i puni bazu u MySQLu koja je na serveru
mislio sam da usmerim IP i port na sajt koji imam, a potom kroz php da primim podatke i da ih prosledim ka MySQL bazi koju takodje imam
znam da otvorim bazu i da manipulisem snjom u php, ali me muci prijem podataka u phpu
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja21.01.2013. u 09:41 - pre 136 meseci
Ne možeš to uraditi iz PHP-a jer on stoji iza web servera. GPS trekeri ne komuniciraju TCP/IP protokolom pa tako ne mogu ni da komuniciraju sa HTTP serverom već moraš ići direktno na socket.

Ja sam to rešio kao što je bantu predložio: napavio sam (u Delphiju) program koji prima socket poruke, parsira ih a onda može sa podacima da radi svašta uključujući i to da ih preko http šalje nekom web serveru.

Planirao sam da taj program objavim kao freeware, samo treba još neke sitnice na njemu da završim.


 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja21.01.2013. u 09:42 - pre 136 meseci
Kakav pristup imas svom serveru, da li mozeš da pokrenes na njemu standalone aplikaciju nevezano za web server?
 
Odgovor na temu

anebojsa
Bgd

Član broj: 16174
Poruke: 94
*.dynamic.isp.telekom.rs.



Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja21.01.2013. u 10:33 - pre 136 meseci
predraze ti si nesto kao i ja napravio u Delphiju i racunar ti je zauzet celodnevno jel tako?

Citat:
da li mozeš da pokrenes na njemu standalone aplikaciju nevezano za web server?

mislim da ne
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja21.01.2013. u 21:28 - pre 136 meseci
Citat:
bantu: Kakav pristup imas svom serveru, da li mozeš da pokrenes na njemu standalone aplikaciju nevezano za web server?


Windows server, naravno pod punom kontrolom.

Citat:
anebojsa: predraze ti si nesto kao i ja napravio u Delphiju i racunar ti je zauzet celodnevno jel tako?


Da, to je ionako server koji sluzi i za druge namene.
 
Odgovor na temu

Nemke_BG

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

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


+45 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja22.01.2013. u 08:57 - pre 136 meseci
@ Predrag

a sto ne bi moglo da se uradi sa CLI PHP skriptom koja je napravljena da bude servis uz standardni socket_create()? Naravno, pretpostavljam da onaj ko
pise tako nesto ima bar VPS sa root privilegijama Inace pitam jer volim da znam koja su ogranicenja jezika koje koristim.
...
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja22.01.2013. u 13:57 - pre 136 meseci
Pa sam si naveo ograničenja :)

GPS trekerima je velika falinka sto ne umeju da koriste TCP/IP vec sve svede na plain socket. To jeste za te uredjaje jednostanvije (verovatno i jeftinije) ali zato debelo komplikuje upotrebu.
 
Odgovor na temu

Nemke_BG

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

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


+45 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja22.01.2013. u 14:55 - pre 136 meseci
Iskren da budem, ova tema mi je zagolicala znatizelju. Mada nemam sa cim da testiram, ali po dokumentaciji
mi deluje kao moguce (ne razumem se bas u tu komunikaciju bez protokola)

http://php.net/manual/en/function.socket-create.php

sa opcijama AF_INET, SOCK_RAW i sa trecim parametrom setovan na 255 (to je valjda RAW, mada sam nesto
izgluglao da moze i 0 da se stavi, pa onda valjda sam detektuje protokol)?

Moguce da sam se sad izlupao, al' kopka me da znam dal' moze tako
...
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja23.01.2013. u 08:15 - pre 136 meseci
Citat:
Predrag Supurovic: Pa sam si naveo ograničenja :)

GPS trekerima je velika falinka sto ne umeju da koriste TCP/IP vec sve svede na plain socket. To jeste za te uredjaje jednostanvije (verovatno i jeftinije) ali zato debelo komplikuje upotrebu.


Prepostavljam da si mislio na HTTP umjesto TCP/IP. TCP/IP je network layer i preko njega na aplikacionom layer-u radi HTTP protokol a i ovaj raw koji koristi GPS, mada nije ni on toliko raw nego vjerujem da se radi o Nmea protokolu koji koristi većina tih GPS uređaja.

Citat:
Predrag Supurovic: Pa sam si naveo ograničenja :)

GPS trekerima je velika falinka sto ne umeju da koriste TCP/IP vec sve svede na plain socket. To jeste za te uredjaje jednostanvije (verovatno i jeftinije) ali zato debelo komplikuje upotrebu.


GPS koristi TCP/IP. Pretpostavljam da si opet mislio na HTTP.

Naime, ono što je problematično u ovom konceptu sa apache -> PHP, je da je apache WEB SERVER, funkcioniše po HTTP protokolu. To između ostalog podrazumjeva, da mu ti pošalješ HTTP request, a on tebi response:

Request:
Code:

GET /index.html HTTP/1.1
Host: www.example.com


Response:
Code:

 HTTP/1.1 200 OK
 Date: Mon, 23 May 2005 22:38:34 GMT
 Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
 Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
 Content-Length: 438
 Connection: close
 Content-Type: text/html; charset=UTF-8

<html>
  <head>
.
.
.
.


HTTP server i jeste taj socket o kome pričate samo funkcioniše u request/response režimu rada, i podrazmjeva neki protokol, headers-e prije poruke itd.. jer to web browser-i očekuju.

E sad taj gps uređaj očekuje da otvori permanentnu konekciju prema tvom serveru i da šalje neke poruke po događaju, tipa pri promjeni lokacije itd...

Da bi osluškivao za permanentnim konekcijama i da bi ih držao stalno otvorenim, moraš da imaš jednu beskonačnu petlju, koja će da privata nove konekcije i da ih handle-uje. Tu je glavni problem sa apache-ijem i ostalim serverima jer oni očekuju da se request obradi i da se proces/thread okonča i vrati u pool i čeka na novi request. Tako da se tvoj koncept beskonačne petlje ne uklapa u paradigmu rada web servera.

Ovo je najbolje uraditi kao standalone aplikaciju koja može da direktno piše u bazu ili da izigrava neki proxy, pa po prijemu poruke da radi http request ili webservice.

Citat:
anebojsa: predraze ti si nesto kao i ja napravio u Delphiju i racunar ti je zauzet celodnevno jel tako?


Ako se na nekom računaru vrti neka aplikacija, još ako je ta aplikacija pokrenuta kao deamon ili service, to apsolutno ne znači da je računar zauzet.
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja23.01.2013. u 09:13 - pre 136 meseci
Citat:
bantu: Prepostavljam da si mislio na HTTP umjesto TCP/IP.


Da, HTTP, lapsus.

Citat:

mada nije ni on toliko raw nego vjerujem da se radi o Nmea protokolu koji koristi većina tih GPS uređaja.


Raw, je baš raw, nema veze sa NMEA. Uređaj prosto šalje niz podataka koji treba isparsirati (doduše struktura podataka je promenljiva i ima nedoslednosti) . I ne očekuje nikakav odgovor.


Citat:

Ovo je najbolje uraditi kao standalone aplikaciju koja može da direktno piše u bazu ili da izigrava neki proxy, pa po prijemu poruke da radi http request ili webservice.


Tako sam i uradio. E sad, meni nije problem što računar treba da bude uključen stalno jer je to tako i inače. Milsim da je anebojsa na to mislio pod "zauzet računar".

Citat:
Nemke_BG:Moguce da sam se sad izlupao, al' kopka me da znam dal' moze tako :D


Nije da ne može nego je pitanje koliko je praktično petljati se kad može mnogo lakše da se odradi na drugi način.
 
Odgovor na temu

anebojsa
Bgd

Član broj: 16174
Poruke: 94
*.dynamic.isp.telekom.rs.



Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja23.01.2013. u 11:00 - pre 136 meseci
hvala na odgovorima.
 
Odgovor na temu

Mister Big Time
The Consigliere
enterparadajz
Belgrade

Član broj: 15306
Poruke: 4747

Sajt: www.go2bed.net


+43 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja10.02.2013. u 00:58 - pre 136 meseci
Samo da kazem da sam pravio PHP socket server preko koga je isla direktna socket komunikacija "od drugde" tj. sa kontrolera za evid. radnog vremena.

I to radi odlicno.

PHP dakle itekako moze da obavlja i backend servise a ne samo HTTP.

Vec je navedeno dosta primera ka dokumentaciji kako se kreira socket koji ce da slusa na nekom portu koji definisemo, dodao bih samo da se u tom slucaju Apache zaobilazi totalno i startuje se cist PHP program preko CLI:
Code:
php -q primanjesasocketa.php

Ovim ce skripta slusati na tom portu non stop dok je server up, a lako se moze napraviti i startup skripta radi automatike kada se server resetuje.

Nmap sa mreze potvrduje da je npr. port 9111 otvoren, podaci stizu iz 'etra' i to je to - RADI!

Naravno, PHP program je potrebno usmeriti sta da radi dalje sa podacima koji stizu kroz direktan socket, kao u ovom slucaju sto bi bilo upisivanje u MySQL bazu, sto je trivijalna stvar.


Mnogi reklamiraju ove mogucnosti PHP-a kao blagodet koriscenja dinamickog interpretiranog jezika u domenu gde apsolutno vladaju kompajleri (C...).




 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: PHP Socket - prijem podataka sa nekog uredjaja10.02.2013. u 03:28 - pre 136 meseci
Bilo bi sjajno da si dao i primer.

No, šta sa deljenim hostingom. koliko znam, admini takvih hostoiva su alergični na takve stvari.


 
Odgovor na temu

[es] :: PHP :: PHP Socket - prijem podataka sa nekog uredjaja

Strane: 1 2

[ Pregleda: 3739 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

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