Hallo, ich habe ein Webinterface zur Ausgabe von Daten. Nun verarbeite ich mit einem in C geschriebenem Programm Daten und schreibe diese in eine Datenbank. Diese Daten sollen dann am besten mit Ajax / jQuery oder ähnlichem im Browser nachgeladen werden. Kennt jemand eine Möglichkeit? Ich will umgehen die Seite jede Sekunde oder sonst eine Konstante Zeit neu zu laden sondern nur dann, wenn ich neue Daten mit C in die Datenbank geschrieben habe...
Einfach wäre z.B. https://www.pubnub.com/blog/2014-12-01-http-long-polling/ - Die Arbeit auf neue Daten zu warten liegt dann hauptsächlich beim Server, dort müsste man in Schleife die DB nach neuen Daten pollen (sofern die DB da keine besseren Möglichkeiten bietet)
Dafür wurden WebSockets erfunden. Da kann der Server Daten senden wann immer er meint es tun zu müssen. https://developer.mozilla.org/de/docs/WebSockets
:
Bearbeitet durch User
Danke für eure Vorschläge. Das hat geholfen :) Nun das umgekehrte ... Wenn die Website etwas in die Datenbank schreibt, wie kann man das mit dem C Programm ohne kostantes pollen mitbekommen? Callbacks.. finde nichts für c und mysql ...
:
Bearbeitet durch User
Christian S. schrieb: > Nun das umgekehrte ... > > Wenn die Website etwas in die Datenbank schreibt, wie kann man das mit > dem C Programm ohne kostantes pollen mitbekommen? Callbacks.. finde > nichts für c und mysql ... Die Frage ist warum die Webseite direkt in die Datenbank schreiben soll. Wenn man dort eine Mittelware einsetzt kann sie das alles übernehmen. Du brauchst ein Zentrales Programm was solche dinge übernimmt. Das Programm verbindet sich mit der Datenbank und die andere Teilnehmer (web) verbinden sich auch mit diesem Programm.
Du meinst das nur einer mit der Datenbank spricht. Also C File schreibt in die Datenbank und gibt gleichzeitig Daten an php Und wenn php Daten in die Datenbank schreiben will, schreibt es die Daten dem C File und das C File die Daten dann in die Datenbank...?
Christian S. schrieb: > Du meinst das nur einer mit der Datenbank spricht. > > Also C File schreibt in die Datenbank und gibt gleichzeitig Daten an php > > Und wenn php Daten in die Datenbank schreiben will, schreibt es die > Daten dem C File und das C File die Daten dann in die Datenbank...? ja so in der Art. Dabei muss es auch kein C Programm sein, man kann auch dafür ein WebApplication mit Java, .net (u.s.w.) schreiben. (PHP ist keine WebApplication!)
Der Browser wird ein Script oder Programm auf dem Server aufrufen, um daten in die db zu schreiben. Falls das selbe Programm und der selbe Prozess das Empfangen, Speichern und Senden der Daten übernimmt, kannst du das in diesm intern lösen. Andernfalls brauchst du Interprozesskomunikation. Dazu kanst du z.B. unix sockets, FIFOs oder shared memory oder Signale verwenden. Lasse einfach das Speichernde Programm das Akualisierende benachrichtigen.
hmmm Daniel A. schrieb: > Lasse einfach das Speichernde > Programm das Akualisierende benachrichtigen. Du meinst wenn c daten in die Datenbank schreibt, schickt es direkt eine Art Interrupt an die Website (sagen wir mal Ajax) und Ajax aktualisiert dann) Und umgekehrt genau so dh. wenn die Website Daten in die Datenbank schreibt, schickt diese eine Art Interrupt an das C Programm. Das C Programm guckt in die Datenbank und nutzt die Daten...
Christian S. schrieb: > Du meinst wenn c daten in die Datenbank schreibt, schickt es direkt eine > Art Interrupt an die Website (sagen wir mal Ajax) und Ajax aktualisiert > dann) was nicht geht, ein Webserver kann nicht aktiv etwas senden. Die Webseite kann z.b. mit dem LongPolling sich mit dem C Programm verbinden und dieses antwortet wenn ich etwas ändert.
Es müsste doch machbar sein, dass man mit Websockets die Website aktuell hält. Dh. shreibt das c Programm Daten in die Datenbank, erledigt man das z.b. mit nodejs. Will die Website Daten in die Datenbank schreiben, kann man mit php doch den Befehl exec() oder shell_exec() nutzen und neben dem Datenbank eintrag ein c programm aufrufen, welches auf dem Server liegt. Dieses c Programm guckt dann direkt in der Datenbank nach dem letzten Update und macht was mit... Somit müssten doch alle Richtungen abgedeckt sein...?! Spricht da was gegen?
Christian S. schrieb: > Spricht da was gegen? ja, das es sinnlos ist ständig irgendwelche Prozesse zu starten. Ja es wird funktionieren aber also "schön" würde ich es nicht beschreiben. Wo ist das Problem deinem C Programm einfach http beizubringen? Dafür gibt es auch einige Libs.
Peter II schrieb: > Wo ist das Problem deinem C Programm einfach http beizubringen? Dafür > gibt es auch einige Libs. Wofür genau?
Christian S. schrieb: > Peter II schrieb: >> Wo ist das Problem deinem C Programm einfach http beizubringen? Dafür >> gibt es auch einige Libs. > > Wofür genau? damit das C Programm direkt die Ajax request bei einem Event bearbeiten kann.
Christian S. schrieb: > Hast du das schonmal verwendet oder ist das eine Theorie? ja habe ich. Habe damit eine Haussteuerung programmiert. Wenn jemand das Licht einschaltet dann zeigen alle verbunden Browser den geänderten Status sofort an. Das ganze mit LongPolling (damals wusste ich noch nicht mal wie das es dafür schon einen namen gibt, hatte mir es selber einfallen lassen) und Ajax mit JSON.
Christian S. schrieb: > Könntest du mir das schicken? Wäre sehr nett! nein leider nicht, das ist nichts zum weitergeben. Wie gesagt, es ist gar nicht so schwer. Suche dir eine lib womit du aus C eine Webserver breitstellen kannst. Dann noch eine json lib und dann hast du fast alles zusammen. Ich habe alles von Grund auf selber geschrieben, einfach nur weil es mal versuchen wollte.
Nachtrag: muss es denn bei dir C sein? .net (auch mono unter Linux) bietet alles was man brauch. eine Einfach Version ist vermutlich schon mit 20-30 Codezeilen möglich.
Peter II schrieb: > net (auch mono unter Linux) bietet alles was man brauch. eine Einfach > Version ist vermutlich schon mit 20-30 Codezeilen möglich. Ich würde mich von allem was MS softwaretechnisch macht fernhalten, das ist nicht von dauer. Ich würde eher auf nodejs setzen, enthält standardmässig http module. Für websockets nutze ich https://www.npmjs.com/package/websocket , verschidene DBs sind dort noch nicht so gut abstrahiert, aber https://github.com/w1nk/node-odbc/ sieht sehr vielversprechend aus.
Peter II schrieb: > muss es denn bei dir C sein? C oder C++ Peter II schrieb: > .net (auch mono unter Linux) bietet alles was man brauch. eine Einfach > Version ist vermutlich schon mit 20-30 Codezeilen möglich. Werde ich mir mal angucken. Im Moment tendiere ich zu nodejs. Daniel A. schrieb: > Ich würde mich von allem was MS softwaretechnisch macht fernhalten, das > ist nicht von dauer. Sei doch nicht so skeptisch :) Daniel A. schrieb: > https://github.com/w1nk/node-odbc/ sieht sehr vielversprechend aus Schonmal getestet?
Daniel A. schrieb: > Peter II schrieb: >> net (auch mono unter Linux) bietet alles was man brauch. eine Einfach >> Version ist vermutlich schon mit 20-30 Codezeilen möglich. > Ich würde mich von allem was MS softwaretechnisch macht fernhalten, das > ist nicht von dauer. klar kann niemand in die Zukunft sehen, aber eine Sprache die einem alles bietet was man braucht und stabil läuft würde ich nicht ausschließen nur weil sie von MS erfunden wurde. > Ich würde eher auf nodejs setzen das würde ich persönlich ausschließen. Ich mag keine Sprachen ohne Datentypen. Ist halt eine Scriptsprache - es gibt keine Compiler Fehler. Fehler fallen erst zu Laufzeit auf. Im Browser hat man ja keine Wahl, aber doch nicht auf dem Server.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.