Ankündigung

Einklappen
Keine Ankündigung bisher.

Gleichzeitiger Zugriff auf Skript-Datei

Einklappen

Neue Werbung 2019

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

  • Gleichzeitiger Zugriff auf Skript-Datei

    Hallo zusammen,

    ich hätte da mal eine Frage:

    Folgende Situation:
    Ich habe ein Programm zur Auftragsbearbeitung erstellt. Hier werden anhand einer AU-Nummer die Positionen zum Auftrag geladen.
    Hierzu wird in einer Datei ein php-Script ausgeführt, welches wie folgt abreitet:
    Aufruf der Datei (ladebestelldaten.php)
    In dieser Datei wird anhand von einem Texteingabefeld die Bestellnummer eingegeben. Wenn ein Auftrag existiert, lade ich die entsprechenden Positionen zu diesem Auftrag in eine Datenbank (localhost). Die Daten werden von einer externen Quelle geladen.

    Soweit funktionier alles, wenn nur eine Person arbeitet.


    Nun habe ich festgestellt, das wenn mehrere Personen in diesem Programm arbeiten (zum Beispiel an 2 PC alle das Programm aufrufen und unterschiedliche Aufträge laden), das nicht immer alle Positionen zu einem Auftrag von der externen Quelle geladen werden.

    Meine Vermutung:
    Ruft PC01 die Datei ladebestelldaten.php auf, werden die Positionen geladen.Wenn nun während dem Laden der Positionen am PC02 ein anderer Auftrag geladen werden soll, wird die Verarbeitung von PC01 abgebrochen, da es die gleiche Datei (ladebestelldaten.php) ist. PC01 und PC02 sind im gleichen Netzwerk.

    Kann das sein, das meine Vermutung richtig ist?

    Hinweis:
    Es geht hier nicht um einen Fehler im Script, sondern darum, das wenn eine php-Datei von mehreren Clients gleichzeitig aufgerufen wird, dies zu Problemen in der Scriptverarbeitung (php => Serverseitig)) führen kann.

    Hoffe, das ich in das Thema richtig platziert habe.

    Grüß
    Falke07

  • #2
    Es geht hier nicht um einen Fehler im Script, sondern darum, das wenn eine php-Datei von mehreren Clients gleichzeitig aufgerufen wird, dies zu Problemen in der Scriptverarbeitung (php => Serverseitig)) führen kann.
    Nein, theoretisch kannst du dasselbe Script X-Mal gleichzeitig aufrufen oder ausführen. Jede Anfrage auf das Script ist ein neuer Request und wird separat abgearbeitet.
    Aber vielleicht hat die externe Quelle eine Beschränkung drin.

    Kommentar


    • #3
      Hallo jonas3344,

      thx für die schnelle Antwort.

      Ich möchte nur auf Nummer sicher gehen, Deshalb hierzu nochmal meine Frage zu deiner Antwort:
      Selbst, wenn ich in einer Firma mit 10 PC (Client) über das gleiche Gateway die gleiche Datei (ladebestelldaten.php) aufrufe, werden 10 Request an den Server gesendet und abgearbeitet?

      SY
      Falke07

      Kommentar


      • #4
        Ja natürlich.

        Kommentar


        • #5
          eventuell solltest du dir mal PHP-Sessions anschauen ^^

          und ja - jeder Mitarbeiter hat seine eigene "Sitzung" wenn da also 10 mal das gleiche Zielscript aufgerufen wird, dann passiert es eben 10 mal .. der Webserver sollte geeignete Caching Maßnahmen ergreifen (tut er normalerweise auch automatisch), um diese Zugriffe nicht jedesmal an die Festplatte weiter zu reichen
          "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

          Kommentar


          • #6
            Du solltest auch dein Datenbankhandling genauer unter die Lupe nehmen.

            Kommentar


            • #7
              Hallo,

              @jonas3344: THx

              @eagle275: Gute Idee, habe ich mich noch nicht damit beschäftigt; Habe $_SESSION mir gerade mal grob angeschaut, Finde ich sehr nützlich. THx

              @jspit: Was genau meinst Du mit Datenbankhandling? Eine Query ist zum Beispiel:
              PHP-Code:
              $result $conn -> query("select artnr, menge from auftrag where aunr = '$aunr' order by id ASC"); 
              SY
              Falke07

              Kommentar


              • #8
                $aunr kommt direkt vom Form? Dann hast du eine SQL-Injection Lücke. Prepared Statements würden sich anbieten. Gibt es für PDO ( zB: https://php-de.github.io/jumpto/pdo/ ) und mysqli.
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Reine DB-Abfragen sind i.A. unkritisch. Was ich mit Datenbankhandling meine sind die üblichen Probleme beim Mehrbenutzerzugriff wenn Aktualisierungen/Löschungen vorgenommen werden. Stichwort Transaktionen.

                  Kommentar


                  • #10
                    Hallo,

                    @jspit: Sehr interessant, wusste ich nicht, das es die Befehle beginTransaction() , commit sowie rollback() für das Problem gibt. Hätte ich schon oft gebrauchen können und mir so eine umständliche, andere Lösung für das Problem erstellt. Sehr guter Tipp!!

                    @hausl: Das Thema haben wir beide bereits erfolgreich durch. Ich habe die Query nur als Beispiel schnell geschrieben. Klar sind query mit Ergebnissen von Form- Eingaben mit prepare etc. im select eingebunden.

                    SY
                    Falke07

                    Kommentar


                    • #11
                      Am Rande:
                      Test's von Datenbankklassen lasse ich immer ohne "mocking" gegen eine echte Datenbank laufen. Nutze dabei beginTransaction() , mache dann diverse Test mit Erstellen von Tabellen etc.etc. und am Ende nur ein rollback().

                      Kommentar

                      Lädt...
                      X