Social Media
Foren
QA Plugindata
|
Hab noch nen coolen Tipp für dich, was das Plugin noch beschleunigt.
Schau dir mal ON DUPLICATE KEY an.
Dann sparst du dir das getData und brauchst auch kein UPDATE-Statement mehr zu machen.
http://dev.mysql.com/doc/refman/5.1/de/i…-duplicate.html
Kannst du die Funktionen noch statisch machen? Dann spart man sich den Current() aufruf. Macht bei dem Plugin ja aktuell eh keinen Sinn, zwei Instanzen zu haben.
Setzt $data dann oben auf null statt array() und prüfst bei getData, mit isset, ob das schon vorhanden ist. Wenn nicht, lädst du die Daten nach. Beim set fügst du das Element dann nur ein, wenn die Daten geladen werden, andernfalls werden ja später eh die aktuellen werte rausgeholt. So würdest du beim Speichern die Daten gar nicht auslesen müssen.
Vielleicht könntest du ja noch unseren Cache benutzen, ähnlich wie bei den Settings, so spart man sich die Select-Queries, kannst dich ja auch mal an das Memcached-Plugin wagen (und als optionale Abhängigkeit nutzen): http://www.contentlion.de/plugins/memcached.html
EDIT: Warum kann man eigentlich bei setData einen areaType angeben, bei getData aber nicht? Und wo wird das last_update wieder ausgelesen?
Schau dir mal ON DUPLICATE KEY an.
Dann sparst du dir das getData und brauchst auch kein UPDATE-Statement mehr zu machen.
http://dev.mysql.com/doc/refman/5.1/de/i…-duplicate.html
Kannst du die Funktionen noch statisch machen? Dann spart man sich den Current() aufruf. Macht bei dem Plugin ja aktuell eh keinen Sinn, zwei Instanzen zu haben.
Setzt $data dann oben auf null statt array() und prüfst bei getData, mit isset, ob das schon vorhanden ist. Wenn nicht, lädst du die Daten nach. Beim set fügst du das Element dann nur ein, wenn die Daten geladen werden, andernfalls werden ja später eh die aktuellen werte rausgeholt. So würdest du beim Speichern die Daten gar nicht auslesen müssen.
Vielleicht könntest du ja noch unseren Cache benutzen, ähnlich wie bei den Settings, so spart man sich die Select-Queries, kannst dich ja auch mal an das Memcached-Plugin wagen (und als optionale Abhängigkeit nutzen): http://www.contentlion.de/plugins/memcached.html
EDIT: Warum kann man eigentlich bei setData einen areaType angeben, bei getData aber nicht? Und wo wird das last_update wieder ausgelesen?
Nur versteh ich nicht, wie dass das Ganze bei setData() beschleunigen soll...
Da lese ich doch vorher gar nicht aus, ob Einträge vorhanden sind...
PHP-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public function setData ($property, $value, $area = "global", $areaType = "core", $last_update = null) {
$property_escape = DataBase::Current()->EscapeString($property);
$value_escape = DataBase::Current()->EscapeString($value);
$area_escape = DataBase::Current()->EscapeString($area);
$areaType_escape = DataBase::Current()->EscapeString($areaType);
if(is_null($last_update)){
$last_update = "NOW()";
} else{
$last_update = "'".DataBase::Current()->EscapeString($area)."'";
}
if ($this->getData($property, $area) == null) {
DataBase::Current()->Execute("INSERT INTO `{'dbprefix'}plugin_plugindata_data` (
`property`, `value`, `last_update`, `area`, `areaType`
) VALUES (
'" . $property_escape . "', '" . $value_escape . "', " . $last_update . ", '" . $area_escape . "', '" . $areaType_escape . "'
); ");
} else {
DataBase::Current()->Execute("UPDATE `{'dbprefix'}plugin_plugindata_data` SET `value` = '" . $value_escape . "', `last_update` = " . $last_update . " WHERE `property` = '" . $property_escape . "' AND `area` = '" . $area_escape . "'; ");
}
$this->data[$area][$property] = $value;
}
|
Da lese ich doch vorher gar nicht aus, ob Einträge vorhanden sind...
Ich glaub, ich habe es jetzt verstanden. xD
So?:
So?:
PHP-Quelltext |
|
1 2 3 4 5 |
DataBase::Current()->Execute("INSERT INTO `{'dbprefix'}plugin_plugindata_data` (
`property`, `value`, `last_update`, `area`, `areaType`
) VALUES (
'" . $property_escape . "', '" . $value_escape . "', " . $last_update . ", '" . $area_escape . "', '" . $areaType_escape . "'
) ON DUPLICATE KEY UPDATE `value` = '" . $value_escape . "', `last_update` = " . $last_update . "; ");
|
Ähnliche Themen
-
- QR Code Generator »
- QR-Code Generator in neuer Version (27. Januar 2013, 11:55)
-
- Projekt und Plugin Vorstellung »
- User-System wir kommen! :) (1. Februar 2013, 16:35)
-
- Feedback »
- Verbugte Plugins (2. Februar 2013, 10:35)
-
- Projekt und Plugin Vorstellung »
- Advent, Advent ein Plugin Brennt (1. Dezember 2012, 19:46)