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.
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
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.
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 aber nun eine kleine Zeitverzögerung hinzufüge
PHP-Code:
function activate() {
$this->save();
sleep(2);
$this->sortiere();
}
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.
Kommentar