PHP: Duplikate aus Array entfernen

Tags: PHP Kommentieren

Die Funktion array_unique() (PHP 4 >= 4.0.1, PHP 5) stellt die Funktionalität zur Verfügung, doppelte Einträge (der Werte) aus einem Array zu entfernen. Es sollte jedoch beachtet werden, dass die Array-Schlüssel erhalten bleiben.
Um ein neues Array mit fortlaufenden Schlüsseln zu generieren, verwende man diesen Code (falls man das Array anschließend mit einer for-Schleife durchlaufen möchte):

$array = array_values(array_unique($array));

Große MySQL-Datenbanken beschleunigen

Tags: MySQL-Server | Webserver Kommentieren

In einem aktuen Fall war eine Datenbank mit ca. 60.000 Einträgen und vielen Spaltendaten bei der Abfrage simpler gefilterter Daten mit einem Limit von 0, 10 langsam und es hieß diese zu optimieren. Neben der Überprüfung der Abfragen über

EXPLAN SELECT * FROM *

in welcher dann ersichtlich ist, welche Keys hinzugezogen werden (diese sind oft ausschlaggebend für die Geschwindigkeit der Abfrage), sollte man sich ebenfalls einmal den Query-Cache des Servers ansehen.
Hierfür gibt es (oder auch noch nicht, dann hinzufügen) eine Abfrage in der my.cnf namens query_cache_limit, welche oftmals auf 0 steht. Damit ist der Query Cache deaktiviert und es werden keine Abfragen gecached. Das Caching der Abfragen speichert diese zwischen und führt diese nicht jedes Mal erneut aus (sofern sich die Tabelle nicht geändert hat). Das ist auf jeden Fall ratsam, wenn eine Datenbank nicht ständig geändert wird. Man stelle diesen Wert einfach mal auf 8M o.Ä. und beobachte in phpMyAdmin die Statusvariablen unter „Abfragen Cache“. Dort erkennt man die Auslastung des aktuellen Cache, wie viele Abfragen aufgenommen und insbesondere wie viele herausgeschmissen wurden (weil der Cache zu klein ist).
In unserem Fall haben wir einen Geschwindigkeitsschub von 1127ms (also über eine Sekunde) erreichen können. Gebe zu: Der Server ist eine kleine Krücke. Aber die Resultate überzeugen.

Redaxo: Nach Update fehlen die Artikel im Backend

Tags: Redaxo Kommentieren

Einfach die folgenden SQL-Befehle ausführen und die Artikel erscheinen wieder:

ALTER TABLE rex_action CHANGE revision revision INT( 11 ) NOT NULL DEFAULT '0'; ALTER TABLE rex_article CHANGE revision revision INT( 11 ) NOT NULL DEFAULT '0'; ALTER TABLE rex_article_slice CHANGE revision revision INT( 11 ) NOT NULL DEFAULT '0'; ALTER TABLE rex_clang CHANGE revision revision INT( 11 ) NOT NULL DEFAULT '0'; ALTER TABLE rex_file CHANGE revision revision INT( 11 ) NOT NULL DEFAULT '0'; ALTER TABLE rex_file_category CHANGE revision revision INT( 11 ) NOT NULL DEFAULT '0'; ALTER TABLE rex_module CHANGE revision revision INT( 11 ) NOT NULL DEFAULT '0'; ALTER TABLE rex_module_action CHANGE revision revision INT( 11 ) NOT NULL DEFAULT '0'; ALTER TABLE rex_user CHANGE revision revision INT( 11 ) NOT NULL DEFAULT '0'; UPDATE rex_article SET revision = 0; UPDATE rex_article_slice SET revision = 0;Getestet bei einem Update von Redaxo 4.1 auf 4.2.1.

TOP