Ich schreibe ein Übersetzungstool für eine Multilingua-Seite.
Die Seite nutzt eine MySql Tabelle, wo alle Texte in folgenden Spalten stehen
id | folder | page | piece | language | content
Inhalt der Zeilen wäre z.B.
1 | members | login | st_title | 1 | Log In
2 | members | login | st_title | 2 | Einloggen
Das Ganze funktioniert super, bis auf eine Kleinigkeit.
Damit der Übersetzer sich nicht dusselig sucht, auf welchen Seiten noch Übersetzungen fehlen, will ich ihm eine hübsch nach Ordner und Seite sortierte Liste ausgeben, die nur die Seiten anzeigt, wo mindestens ein Teil fehlt.
Problem ist, das sind heftige viele Zeilen, so wie ich es jetzt habe dauert die Abfrage 35 Sek., aber max script runtime ist beim Provider nur 30 Sek., sprich das gibt kein Ergebnis, sondern Timeout.
Darum die Frage: Kann ich den folgenden Code irgendwie optimieren, so dass es schneller geht?
Edit: Sorry, bin im falschen Forum gelandet, kann das jemand bitte nach PHP verschieben?
Die Seite nutzt eine MySql Tabelle, wo alle Texte in folgenden Spalten stehen
id | folder | page | piece | language | content
Inhalt der Zeilen wäre z.B.
1 | members | login | st_title | 1 | Log In
2 | members | login | st_title | 2 | Einloggen
Das Ganze funktioniert super, bis auf eine Kleinigkeit.
Damit der Übersetzer sich nicht dusselig sucht, auf welchen Seiten noch Übersetzungen fehlen, will ich ihm eine hübsch nach Ordner und Seite sortierte Liste ausgeben, die nur die Seiten anzeigt, wo mindestens ein Teil fehlt.
Problem ist, das sind heftige viele Zeilen, so wie ich es jetzt habe dauert die Abfrage 35 Sek., aber max script runtime ist beim Provider nur 30 Sek., sprich das gibt kein Ergebnis, sondern Timeout.
Darum die Frage: Kann ich den folgenden Code irgendwie optimieren, so dass es schneller geht?
Code:
$allfiles = array();
$abfrage = mysql_query("SELECT DISTINCT `folder` FROM `sitetext` WHERE `language` = 1 ORDER BY `folder`");
while($row = mysql_fetch_object($abfrage)) {
$abfrage2 = mysql_query("SELECT DISTINCT `page` FROM `sitetext` WHERE `folder` = '".$row->folder."' AND `language` = 1 ORDER BY `page`");
while($row2 = mysql_fetch_object($abfrage2)) {
$abfrage3 = mysql_fetch_array(mysql_query("SELECT COUNT(`id`) FROM `sitetext` WHERE `folder` = '".$row->folder."' AND `page` = '".$row2->page."' AND `language` = 1"));
$abfrage4 = mysql_fetch_array(mysql_query("SELECT COUNT(`id`) FROM `sitetext` WHERE `folder` = '".$row->folder."' AND `page` = '".$row2->page."' AND `language` = 2 AND `content` <> ''"));
if ($abfrage3[0] != $abfrage4[0]) {
$allfiles[] = $row->folder."/".$row2->page;
}
}
}
Edit: Sorry, bin im falschen Forum gelandet, kann das jemand bitte nach PHP verschieben?
Zuletzt bearbeitet: