Zeitversetzte "Aktion"

Das Update klappt noch nicht ganz.
Ohne Fehlermeldung wirds einfach nicht in der Tabelle aktualisiert.
Mal sehen woran das liegt .. :(

paD

Und erledigt. Es fehlte lediglich ein:
$db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

paD
 
Zuletzt bearbeitet von einem Moderator:
War mit Familie im Kino ;)

Grundsätzlich: Bei Fehlermeldungen/Exceptions und der gleichen immer die Meldung mit posten, sonst kann man nicht helfen.

Alternativ hättest du auch statt fetchObject() die Methode fetchAll() verwenden können. fetchAll() liefert allerdings Arrays statt Objekte.
 
Hm, Kino - bei dem Wetter nicht die schlechteste Idee ;)

Bis ich raus gefunden habe, wie mein bei der PDO-Klasse die Errors aussliest.. :P
Als ich es dann geschafft habe, hab ich es auch schon fast geschafft. Ich hatte halt einfach kein Error *GG*

paD
 
Fehler werden mit Hilfe des ERRMODE_EXCEPTION als Exception geworfen. Wenn man weiß, das try-catch die Exceptions abfangen, muss man nur noch die Exception ausgeben/loggen/emailen/sonstwas.

Kennst du dich mit dem Exceptionhandling in PHP nicht aus?
 
PHP:
catch(PDOException $pdoex)
  {
   echo $pdoex;
  }

Das war soweit kein Problem. Allerdings steht in $pdoex nur eine "Object ID". Bis ich heraus gefunden habe, das es "getMessage()" und bei den den SQL-Statements errorInfo() ist hat so lange gedauert ;-)
Wenn man allerdings einmal weiß wonach man googlen muss - findet man doch einiges *G*

Hab es mittlerweile auch mit fetchAll anstatt mit den BUFFERED Querys ;-)

paD
 
Kleine Frage nebenbei..

Ihr lasst ja jetzt ständig im Hintergrund einen "Thread" laufen, um anstehende Arbeiten zu kontrollieren und gegebenenfalls auszuführen.. Wenn ich das Browsergame richtig verstehe, gibt es keine Abhängigkeiten zwischen den einzelnen Usern. Ist das richtig?

Ich halte es in diesem Fall für ziemlichen Overdose, den Server und die DB ständig mit Queries zu malträtieren. Letztlich kann für die Offlinezeit das Abfrageintervall drastisch gesenkt werden (zB alle 30 Minuten), funktionieren könnte auch ein einfaches Abarbeiten, wenn sich der User wieder einloggt. Dann wird der Spielprozess der Offlinezeit in dieser Anmeldephase simuliert (kurze Uhr..) und wenn der Spieler seine Spielfläche sieht, ist es, als ob das Spiel ohne ihn weitergelaufen wäre.

mfg chmee
 
Aktuell ist das vollkommen richtig. Es gibt noch keine wirkliche Abhängigkeit zwischen den Usern. Diese soll aber kommen und ich wollte es halt von Anfang an richtig machen.

Das ist für Aktionen gedacht wie:
Schicke einem Spieler eine Truppe, die sein Casino für 5 Minuten unbeliebter machen.

Und das soll natürlich auch berechnet werden, wenn die User offline sind. Es säh ziemlich eigenartig aus, wenn ein User übertrieben gesagt auf Platz eins liegt, von ein paar Usern "angegriffen" wird, keine Ergebnisse sichtbar sind und erst dann, wenn er sich wieder einloggt plötzlich 5 Ränge fällt.

Wenn ich jetzt JEDEN User alle Einträge abarbeiten lasse, wird es für einige User vielleicht unangenehm langsam, wenn sich ein paar Aufträge angesammelt haben.

Ist die Frage.. wie machen es die anderen großen Browsergames? ^^

paD
 
WENN Kreuzabhängigkeiten zwischen den Usern stattfinden sollen - früher oder später - führt ja kein Weg an einer ständigen Bearbeitung vorbei. Somit ist der eingeschlagene Weg schon ok.

mfg chmee
 
Okay :-)
Spätestens wenn es Gilden, Allianzen, Kartelle oder wie wir es nennen werden gibt, muss es eine Abhängigkeit unter den Spielern geben.

Auch bei der Steuerberechnung ect. dürften Werte, und Gelder von den Casinos nicht erst später berechnet werden.

Aktuell schläft unser Server sowieso nur ;) 25% Arberitsspeicher und 0.01 - 0.06 CPU-Load.

paD
 
Zurück