Ankündigung

Einklappen
Keine Ankündigung bisher.

elegante Lösung für permanente Datenbankabfrage

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • elegante Lösung für permanente Datenbankabfrage

    Hallo Zusammen,

    Mir viel kein besserer Titel ein.

    Folgendes Szenario. Ich erstelle ein paar Daten in PHP, welche in in einer Datenbank ablege. Diese Daten soll ein Programm eines Kollegen weiterverarbeiten und das Ergebnis seiner Bearbeitung schreibt er wieder in meine Datenbank. So ein Konstrukt habe ich bisher noch nie realisiert. Wie bekomme ich in meinem Code mit, dass das Programm meines Kollegen das Ergebnis zurück geliefert hat? Frage ich einfach in einer While Schleife immer wieder meine Datenbank ab, ob in dem Feld "Ergebnis" Daten vorhanden sind? Oder gibt es da eine bessere Lösung? Die Daten benötige ich zum weiterarbeiten in meinem Code.

    Ich verwende PHP 8.2 und Datenbanksystem ist MSSQL. Das externe Programm wird in Delphi programmiert.


    Vielen Dank für eure Antworten


    Denis

  • #2
    manche Datenbanken haben dafür Konzepte wie z.B. LISTEN/NOTIFY. Also, z.B. bei Änderungen via TRIGGER ein Event auslösen, die Applikation 'hört' dann auf solche Events.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Sag doch einfach deinem Kollegen, dass er nachdem er was hinzugefügt hat, mit Delphi die `http://<deine-domain.de>/updates.php` einmal aufrufen soll und diese Datei macht dann die Verarbeitung der neuen Daten.
      Tutorials zum Thema Technik:
      https://pilabor.com
      https://www.fynder.de

      Kommentar


      • #4
        Noch einfacher wird es wenn du das Delphi-Programm deines Kollegen aufrufst (system, exec ?) und danach die Ergebnisse weiterverarbeitest. Setzt logischer Weise voraus das das Delphi-Programm keine manuellen Bearbeitungsschritte bzw. spezielle Nutzereingaben benötigt.

        Kommentar


        • #5
          Dein pragmatischer Ansatz ist zwar nicht sehr elegant aber valide.
          MSSQL steckt das locker weg, wenn du in einer schleife da ein select gegen hämmerst.
          Idealerweise aber nur kleine datensätze ziehen mit passendem index, und nicht jedes mal einen full table scan auslösen.

          Der ansatz mit dem gegenseitigen aufruf ist eleganter, kann aber uU ein Sicherheitsproblem werden, denn die programme müssen sich gegenseitig aufrufen können. Wenn das nicht ordentlich abgesichert wird, kann perspektivisch jeder diese progarmme aufrufen, möglicherweise nicht gewünscht ist

          Da in der Problematellung nicht angegeben wird, ob es sich überhaupt um eine Web-Applikation handelt oder um ein script für das CLI und auch nicht, ob das programm des Kollegen auf demselben server ausgeführt wird, ist diese Möglichkeit uU gar nicht realisierbar.

          Kommentar


          • #6
            Frage ich einfach in einer While Schleife immer wieder meine Datenbank ab, ob in dem Feld "Ergebnis" Daten vorhanden sind?
            Solange du Pausen zwischen den Polls machst, und nicht hunderte von Prozessen existieren, die das gleiche machen, ist das die Lösung die sich am einfachsten implementieren lässt.

            Und ich finds nichtmal sonderlich unelegant... regelmässiges polling ist ein typisches Monitoring Verfahren, das machen andere genauso

            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar

            Lädt...
            X