Ich habe eine Datenbank mit vielen Spielobjekten, , die von den folgenden 3 PHP-Skripten abgefragt wird.Wie stelle ich sicher, dass die sich schnell ändernden Daten aus meiner MySQL DB in PHP-Skripten korrekt dargestellt werden?
- Liste Objekte: bekommt ein JSON-Objekt mit allen Elementen Ich brauche
- Objekt hinzufügen: fügt ein Objekt in der Datenbank
- Reset: alle Objekte aus der Tabelle wischt
Alle drei funktionieren, etwas. Obwohl, gibt es eine Timing-Mismatch. Wenn das Spiel die Reset-Funktion aufruft, wird es neu gestartet. Wenn das Spiel neu gestartet wird, werden automatisch alle Objekte geladen. Leider, und hier ist das Problem, wenn das Spiel gerade zurückgesetzt wurde, werden Objekte immer noch von Skript 1 gezogen.
Ich weiß von Transaktionen, aber ich habe sie nie verwendet und ich habe keine Ahnung, wie ich implementieren würde diese hier, da meine Transaktion Dinge von verschiedenen Skripten betrifft, die zu unterschiedlichen Zeiten ausgeführt werden.
Für Bonus-Kredit: Wird dieses Setup (AS3> php> MySQL) mich mit einer schweren Last in Schwierigkeiten bringen? Das Spiel könnte von 10, 100, 1000 Leuten aufgegriffen werden. Kann ich etwas über dieses Thema lesen?
Edit: neue Idee/Frage
Derzeit arbeitet der Wisch als solche: Die Objekte-Tabelle ein Feld ‚gelöscht‘ hat, die auf ‚1‘ gesetzt, wenn die Reset-Methode aufgerufen wird. Es könnte klüger sein, die vorhandenen Daten in eine Archiv-Tabelle zu kopieren und dann die Live-Tabelle gestutzt ...
Edit: Hier ist der (relevante) PHP-Code Ich bin mit
Objekt hinzufügen:
if ($db_found) {
$x = $_GET['x'];
$y = $_GET['y'];
$type = $_GET['type'];
$name = $_GET['name'];
$text = $_GET['text'];
$SQL = "INSERT INTO bodies (x,y,type,name,text)
VALUES ('".$x."','".$y."','".$type."','".$name."','".$text."')";
if (!mysql_query($SQL))
{
die('Error: ' . mysql_error());
}
};
mysql_close($db_handle);
Liste/Get Objekte:
if ($db_found) {
$SQL = "SELECT * FROM bodies WHERE deleted = 0";
$res = mysql_query($SQL);
$rows = array();
while($r = mysql_fetch_assoc($res)) {
print $r['x'] . ','
. $r['y']
. ','
. $r['type']
. ','
. $r['name']
. ','
. $r['text']
. ';';
}
};
mysql_close($db_handle);
Reset: (EDIT 2)
mysql_query("LOCK TABLES bodies WRITE;");
$SQL = " DELETE FROM bodies";
if (!mysql_query($SQL))
{
die('Error: ' . mysql_error());
}
};
mysql_query("UNLOCK TABLES;");
Können Sie den Code ???? Form, was ich sehe .. Sie müssen vorstellen .. Spiel 'Sitzung' und auch 'clear' Cache ... – Baba