Ab in die Ferien
Nun gehts endlich in die richtigen Ferien. Drei Wochen Skandinavien (unter anderem auch da) und danach gleich anschliessend noch eine Woche Sommerlager in Brienz.
mysql> show processlist;Also noch etwa 100 Stunden um die Keys zu erstellen. Und leider dauern die Abfragen immer noch zu lange. Desshalb werde ich als nächstes Denormalisieren.
+----+---------+-----------+---------+---------+--------+-------------------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+---------+-----------+---------+---------+--------+-------------------+------------------------------------------------------------------------------------------------------+
| 19 | xyz | localhost | xyz | Query | 340517 | copy to tmp table | ALTER TABLE `pagelinks`
ADD UNIQUE KEY `pl_from` (`pl_from`,`pl_namespace`,`pl_title`),
ADD KEY |
| 45 | root | localhost | wikiway | Query | 0 | NULL | show processlist |
+----+---------+-----------+---------+---------+--------+-------------------+------------------------------------------------------------------------------------------------------+
2 rows in set (0.06 sec)

Query OK, 1097721 rows affected (2 hours 45 min 31.85 sec)Mehr zu Krass-viel-Daten vieleicht irgendwann mal später hier in diesem Blog.
Records: 1097721 Duplicates: 0 Warnings: 0
class SimpleSearch extends AbstractBreadthFirst {
function generateDescendants($parent){
$ret = array();
$ret[] = $parent.".1";
$ret[] = $parent.".2";
$ret[] = $parent.".3";
return $ret;
}
}
Das ganze wird dann relativ einfach verwendet. Nämlich so:$s = new SimpleSearch();So wird zuerst ein Suchobjekt instanziert und dann die Suche gestartet. Übergeben wird der Startzustand, der Zielzustand und die maximale Suchtiefe. Wenn ein Status gefunden wird, wird true zurückgegeben. Mit getPath kann in diesem Fall ein Array mit dem Lösungspfad zurückgegeben werden. Mit getCount kann die Anzahl durchsuchter Knoten zurückgegeben werden.
if( $s->runBreadthWithDepth("1", "1.2.3.1.2.2.3",6) ){
print_r($s->getPath());
}
print("\nCount: ".$s->getCount()."\n\n");