bartoneczek
#programowanie #cpp trochę #webdev i może trochę #php

Mircy mam problem pic related.

Dane mamy jakieś fizyczne obiekty i informacje o nich (np. poziom przepływu wody czy jasność, never mind).

Klient i serwer. Klient przez zwykłe HTTP request wysyła pytanie o stan obiektów do serwera. Serwer, a konkretnie jakiś skrypt PHP dostaje request, otrzymuje dane z programu (pisanego w C++) pobierającego i przetwarzającego dane z czujników, tworzy z nich dokument JSON i zwraca klientowi. Wszystko wydaje się proste ładne i przyjemne, tylko że jest jeden problem. Nie wiem jak wymieniać dane między skryptem PHP a samym programem głównym.

Najprostszym i najgorszym rozwiązaniem jest generowanie na bieżąco np. pliku tekstowego z aktualnymi danymi, z których skrypt PHP pobierze dane i zwróci klientowi. Niestety dane będą zmieniały się bardzo często i takie ciągłe pisanie do pliku to zły pomysł.

Pomyślałem jeszcze o wewnętrznej wymianie danych na jakimś porcie, niemniej nie jestem pewny jak PHP radzi sobie z obsługą socketów. Wiem tylko że taka możliwość istnieje. :)

A może Wy mircy macie jakieś pomysły jak to rozwiązać?
  • Najlepsze
  • Wszystkie komentarze
o.....a
o.....a
@bartoneczek: Nie możesz generować json już w programie w cpp i wystawić bezpośrednio dla klienta?
p.....7
p.....7
@bartoneczek: nie odświeżyło mi się :) A musisz otrzymywać dane przez http? Nie możesz napisać serwera w cpp i po prostu używać tych samych danych które będziesz wysyłał przez TCP?
f.....x
f.....x
@bartoneczek: słowo klucz...baza danych
bartoneczek
bartoneczek Autor
1
koob
koob
1
@bartoneczek: postaw sobie prosty serwer http w cpp, google boost.asio
f.....x
f.....x
@bartoneczek: albo mongodb na ramdisku :) i tylko co pewien czas dump bazy na karte dla bezpieczeństwa :)
bartoneczek
bartoneczek Autor
1
@fotexxx: @koob: @phyrexia2007: @fermento: ok panowie, stokrotne dzięki za zaangażowanie i wiszę Wam wszystkim piwko. Rozwiązań aż za dużo, nie wiem co wybrać, dlatego jutro jak się prześpię siądę i rozważę wszystkie opcje. :D
bartoneczek
bartoneczek Autor
1
@fotexxx: milusio. :D Dzięki.
S.....s
S.....s
Najprostszym i najgorszym rozwiązaniem jest generowanie na bieżąco np. pliku tekstowego z aktualnymi danymi, z których skrypt PHP pobierze dane i zwróci klientowi. Niestety dane będą zmieniały się bardzo często i takie ciągłe pisanie do pliku to zły pomysł.


@bartoneczek: niech program zwraca dane do konsoli i odpalaj go przez

shell_exec()
, o ile nie potrzebujesz tego pod jakiś profesjonalny projekt i odizolujesz dane użytkownika tak, aby nie mógł przepchnąć
p.....o
p.....o
p.....7
p.....7
@bartoneczek: baza danych? (wiem, że overkill)
bartoneczek
bartoneczek Autor
0
@fotexxx: albo w sumie to nie. Już pamiętam czemu odrzuciłem to na wstępie i nigdy więcej o tym nie pomyślałem.

Serwer to RPI. Baza danych zajedzie mi kartę. :(
bartoneczek
bartoneczek Autor
0
@phyrexia2007: patrz wyżej.
f.....x
f.....x
@bartoneczek: no to pominąłeś dość istotną informację :) anie możesz trzymać danych na ramdisk albo cos w ten deseń ,aby pominąć zapis na karcie i tylko raz na jakis czas zrzucać z ramdisk na karte ,żeby w razie awarii ch.. nie strzelił danych?
bartoneczek
bartoneczek Autor
0
@phyrexia2007: wtedy tak czy siak wchodzi obsługa socketów w PHP, bo musiałbym realizować wymianę datagramów (czy tam nawiązywać połączenie) nie po localu, tylko już po stronie klienta.

@fotexxx: jest to jakieś rozwiązanie, ale trochę półśrodek. :( Chciałbym uniknąć przypadkowości i pomijania informacji.
f.....x
f.....x
ale trochę półśrodek


@bartoneczek: półśrodkiem jest juz używanie rpi bez zewnetrznego storage :D
bartoneczek
bartoneczek Autor
  • adult
0
Treść przeznaczona dla osób powyżej 18 roku życia...