Jak předávat data mezi programem a PHP

mise

Jak předávat data mezi programem a PHP
« kdy: 15. 06. 2012, 17:01:43 »
Jak mohu jednoduše předávat data mezi aplikací a php? Nebo jaké jsou v linuxu možnosti? Dík

serial port - aplikace - ? - php (webserver) ...

« Poslední změna: 18. 06. 2012, 14:09:54 od Petr Krčmář »


Sten

Asi pomocí nějakých GET nebo POST požadavků. Ale záleží, co je to za data, kolik jich je, jak často je potřeba je předávat a co se s nimi na druhé straně bude dělat.

Asi pomocí nějakých GET nebo POST požadavků. Ale záleží, co je to za data, kolik jich je, jak často je potřeba je předávat a co se s nimi na druhé straně bude dělat.
Toto ma napadlo ako prvé. Skôr si myslím, že dotyčný chce v php spustiť externú aplikáciu, ktorá komunikuje so sériovým portom. Na to existuje http://php.net/manual/en/function.exec.php
Pokiaľ má niečo komunikovať so sériovým portom, asi by to mohol byť daemon alebo cron, ktorý berie požiadavky a ukladá výsledky cez databázu, prípadne file, ale asi lepšia by bola komunikácia cez socket.

mise

Ano, aplikace neustále komunikuje se zařízením přes sériový port a zpracovává data. Vím, že jde udělat sériovou komunikaci přímo v php, ale aplikace je psaná v C a má dost složitý protokol. Musel bych také neustále načítat data v php. Ale o to nejde. Nevím, co bude lepší, jestli předávat data přes soubor nebo socket? Databáze je pro mě moc složitá (ale asi se jí nevyhnu). Webserver bude fungovat jako grafické rozhraní pro diagnostiku. Nebude to tolik dat, půjde jen o několik html stránek, ale při změně dat refresh bude pomocí ajaxu.

co treba pres databazi? neco podobneho resim, céčková aplikace pise neco do DB, phpkovy webUI to tam najde.
Děkuji za možnost editace příspěvku.


Kit

... Databáze je pro mě moc složitá (ale asi se jí nevyhnu). Webserver bude fungovat jako grafické rozhraní pro diagnostiku. Nebude to tolik dat, půjde jen o několik html stránek, ale při změně dat refresh bude pomocí ajaxu.

Co je na databázi složitého? Pomocí databáze se naopak aplikace velmi zjednodušuje, protože hromadu problémů si vyřeší sama. Řešit ACID jiným způsobem je dnes prostě krok zpět. Jediným problémem bude vybrat, kterou DB na ten účel použít, ale podle popisu vyhoví skoro všechny běžně dostupné.

Navíc taková DB dokáže ze získaných dat provádět různé agregace, filtry, řazení,... Tím se aplikace výrazně zjednoduší.

mise

Dík za nakopnutí. Databáze asi bude opravdu rozumnější, stejně ji budu muset použít. Její velikost mi teď vychází na cca 100 x (proměnná, jména, popis a možná přibude další). Ale bojím se toho, že některé hodnoty se budou hodně často měnit, abych to pak rozumně zobrazoval v prohlížeči. Pak také nevím, zda nebude problém, aby k ní přistupoval program i php?

Kit

Ale bojím se toho, že některé hodnoty se budou hodně často měnit, abych to pak rozumně zobrazoval v prohlížeči. Pak také nevím, zda nebude problém, aby k ní přistupoval program i php?

Právě na tohle jsou databáze stavěny. Kolik tisíc změn za sekundu budeš dělat?

mise

Kolik tisíc změn za sekundu budeš dělat?

Tolik hodnot to nebude, ani když použiju realtime graf 3-10 hodnot měnící se 10x za vteřinu. Vlastně mi ani nevadí zpoždění, protože jde jen o zobrazení, hlavní aplikace mi tyto hodnoty bude stejně ukládat.

Kit

Kolik tisíc změn za sekundu budeš dělat?

Tolik hodnot to nebude, ani když použiju realtime graf 3-10 hodnot měnící se 10x za vteřinu. Vlastně mi ani nevadí zpoždění, protože jde jen o zobrazení, hlavní aplikace mi tyto hodnoty bude stejně ukládat.

Možná ti bude vyhovovat databáze Redis. Ovšem i MySQL si s tím poradí.

Re:Jak předávat data mezi programem a php (mezi aplikací a webserverem)
« Odpověď #10 kdy: 16. 06. 2012, 11:37:44 »
jak bylo receno vys: neber to tak, ze se ji "nevyhnes", ale ze je to nejlepsi mozna cesta. Pokud pouzijes neco relativne normalniho(mysql, pgsql, sqlite) tak hotovy connector najdes v podstate kazdem jazyku/frameworku. Budes naprosto jednoduse a TRANSPARENTNE zapisovat nekam(a vubec nemusis resit jak) a na druhy strane zase budes jednoduse cist. Teoreticky by tvoje aplikace treba mohla poskytovat nejakym zpusobem xml apod, ale rozhodne by to trvalo dele zprovoznit a vyladit. Na DB nemas co poradne ladit, ty jmenovane jsou tady desitky let.
Proste si udelas html soubor jako zobrazovatko s AJAX aktualizaci + JS na zpracovani dat. Na pozadi budes volat php skript ktery ti bude posilat XML. Naprosto elegantni reseni.
Děkuji za možnost editace příspěvku.

mise

Re:Jak předávat data mezi programem a php (mezi aplikací a webserverem)
« Odpověď #11 kdy: 16. 06. 2012, 17:54:19 »
Jojo díky, použiju databázi, ta bude nejlepší.

vyvojar

Re:Jak předávat data mezi programem a php (mezi aplikací a webserverem)
« Odpověď #12 kdy: 16. 06. 2012, 18:06:27 »
Čau, předchozí příspěvky jsem nečetl. K tématu. POST request může mít libovolnou velikost, takže klidně můžeš předat jako body requestu třeba xml soubor a pak si ho jednoduše načíst přes souborové funkce v php ( php://input).

Kit

Re:Jak předávat data mezi programem a php (mezi aplikací a webserverem)
« Odpověď #13 kdy: 16. 06. 2012, 20:30:53 »
Čau, předchozí příspěvky jsem nečetl. K tématu. POST request může mít libovolnou velikost, takže klidně můžeš předat jako body requestu třeba xml soubor a pak si ho jednoduše načíst přes souborové funkce v php ( php://input).

To by znamenalo předávat data z aplikace do DB nikoli přímo, ale prostřednictvím Apache a PHP. Bude to trochu pomalejší, ale fungovat to bude.

mise

Re:Jak předávat data mezi programem a php (mezi aplikací a webserverem)
« Odpověď #14 kdy: 17. 06. 2012, 08:32:04 »
Čau, předchozí příspěvky jsem nečetl. K tématu. POST request může mít libovolnou velikost, takže klidně můžeš předat jako body requestu třeba xml soubor a pak si ho jednoduše načíst přes souborové funkce v php ( php://input).

Tuhle možnost bych zvážil, pokud by to mělo běhat i na windows. Tam nevím, jak bych se jinak napojil z aplikace na databázi. Buď xml nebo jako klient přes socket (pokud bych použil např. balík wamp server s apachem)?