[Funktion] Mehrere Klassen mit DB-Zugriff produzieren einen Fehler

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

  • [Funktion] Mehrere Klassen mit DB-Zugriff produzieren einen Fehler

    Folgendes Szenario:

    Ich habe eine Klasse, die mir Bilder abspeichert und ihnen eine Galerie zuweist.
    und eine Funktion in der Foto-Klasse, die einen neuen SortierIndex in die selbe Tabelle schreibt.

    PHP-Code:
    class foto {
         function 
    save() {
              
    DB::getDB()->sendQuery(insert into foto...);
              
    $galerie = new galerie();
              
    $galerie->update();
         }
         function 
    sortiere() {
              
    DB::getDB()->sendQuery(Select galerie from fotos ...);
              
    DB::getDB()->sendQuery(Update fotos set sortindex ...);
         }
         function 
    activate() {
             
    $this->save();
             
    $this->sortiere();
         }


    }
    class 
    galerie {
         function 
    update() {
              
    DB::getDB()->sendQuery(update fotos set galerie = ...);
         }

    Wenn ich das nun für ein Foto mache, funktioniert das Problemlos, ... ABER ... wenn ich nun mehrere Fotos habe, und diese mit foreach{} durchgehe, dann bricht er unterschiedlich einmal nach dem ersten, einmal nach dem 4. einmal nach dem 3. etc. ab. und bringt die Fehlermeldung, dass das SELECT Statement (Select galerie from fotos) in der Sortier-Funktion ungültig ist, weil er keine gültige galerie hat - als wäre die galerie noch nicht in der tabelle upgedatet.

    Wenn ich aber nun eine kleine Zeitverzögerung hinzufüge

    PHP-Code:
    function activate() {
             
    $this->save();
             
    sleep(2);
             
    $this->sortiere();
         } 
    dann funktioniert wieder alles einwandfrei.
    Es scheint, als würde er nicht warten, bis das save() fertig ist, ehe er das sortiere() aufruft.

    kann man das irgendwie abfangen bzw. verhindern? oder kann es sein, dass die beiden klassen vollkommen unabhängig voneinander ihre arbeit machen? und wenn ja, wie kann man der activate-Funktion nicht sagen, dass er warten soll, bis er mit dem save() fertig ist?

    Irgendjemand eine Idee?
    Danke für eure Hilfe.

  • #2
    wie sieht denn die klasse getDB aus? und was soll das?
    PHP-Code:
    $galerie = new galerie(); 
    und wäre es nicht langsam mal zeit auf php5 umzusteigen?

    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar

    Lädt...
    X