Hallo Leute,
Ich habs grad bemerkt das es zahlreiche Postings gibt die das Thema "Allowed memory size..." behandeln.
Ich hab da leider eine etwas verzwickte Geschichte.
Ich habe in der Datenbank für jeden Datensatz ein Feld in dem max 5 Wörter, welche durch ein ; getrennt sind, stehen.
Schaut zB. so aus: WORT1;WORT2;WORT3;WORT4;WORT5;
Ich habe an die 50.000 Datensätze und jeder Datensatz hat bis zu 5 Wörter in dieser Spalte - kann sein muß aber nicht sein. Können auch nur 2 Wörter sein oder 3 oder 4 oder nur eines.
Weiters stehen nicht immer die selben Wörter an der selben Position.
Im Prinzip gehts darum, dass jemand bis zu 5 Keywords für seine Anzeige eintragen kann.
Meine Aufgabe ist es nun, die einzelnen Keywords zu zählen und anschließend die 3 häufigsten auszugeben und 3 zufällig gewählte.
Soll dann so aussehen dass das Keywort "Sonnenschein" zB. 200 mal vorgekommen ist, "Herbstlaub" 500 mal und "Winterreifen" 300 mal.
Diese 3 Keywords sind irgendwo bei diesen 50.000 Datensätze in dieser Spalte gestanden.
Meine HTML-Ausgabe sollte jetzt lauten: Herbstlaub, Winterreifen und Sonnenschein. Die 3 zufälligen lassen wir mal gut sein
Jetzt hätte ich folgendes Script gemacht welches bis zu 38.000 Datensätzen auch funktioniert:
Bis zum "$TaggIng = substr($TaggIng,0,-1);" gibt es keine Probleme.
Aber das explode frißt zu viel Speicher und er verabschiedet sich eben mit dem "Allowed memory size..." Fehler.
Ich hab in der PHP.ini den erlaubten Speicher auf 16MB beschränkt und möchte das auch gar nicht erst in die Höhe setzen, weil die Anzahl der Datenbankeinträge ständig steigen wird und ich nicht jede Woche das Limit höher schrauben kann.
Meine Frage nun:
Kann ich das nicht auch so lösen dass mir die DB gleich das Resultat zurückliefert?
Eben "Sonnenschein" zB. 200 mal vorgekommen, "Herbstlaub" 500 mal und "Winterreifen" 300 mal.
Ursprünglich wollte ich die 5 Keywords auf 5 Splaten aufteilen, nur weiß ich dann überhaupt nicht mehr wie ich das ganze abfragen soll.
Ich hoffe, dass es hier jemanden gibt der mir helfen kann.
MySQL ist noch nicht so meine Stärke.
lg. und herzlichen Dank.
Werner
Ich habs grad bemerkt das es zahlreiche Postings gibt die das Thema "Allowed memory size..." behandeln.
Ich hab da leider eine etwas verzwickte Geschichte.
Ich habe in der Datenbank für jeden Datensatz ein Feld in dem max 5 Wörter, welche durch ein ; getrennt sind, stehen.
Schaut zB. so aus: WORT1;WORT2;WORT3;WORT4;WORT5;
Ich habe an die 50.000 Datensätze und jeder Datensatz hat bis zu 5 Wörter in dieser Spalte - kann sein muß aber nicht sein. Können auch nur 2 Wörter sein oder 3 oder 4 oder nur eines.
Weiters stehen nicht immer die selben Wörter an der selben Position.
Im Prinzip gehts darum, dass jemand bis zu 5 Keywords für seine Anzeige eintragen kann.
Meine Aufgabe ist es nun, die einzelnen Keywords zu zählen und anschließend die 3 häufigsten auszugeben und 3 zufällig gewählte.
Soll dann so aussehen dass das Keywort "Sonnenschein" zB. 200 mal vorgekommen ist, "Herbstlaub" 500 mal und "Winterreifen" 300 mal.
Diese 3 Keywords sind irgendwo bei diesen 50.000 Datensätze in dieser Spalte gestanden.
Meine HTML-Ausgabe sollte jetzt lauten: Herbstlaub, Winterreifen und Sonnenschein. Die 3 zufälligen lassen wir mal gut sein
Jetzt hätte ich folgendes Script gemacht welches bis zu 38.000 Datensätzen auch funktioniert:
PHP Code:
$result = mysql_query("SELECT tagging FROM ".$DbMotor."anzeigen");
while($data=mysql_fetch_array($result)) { $TaggIng .= $data["tagging"]; }
$TaggIng = substr($TaggIng,0,-1); // weg mit dem letzten ;
$TaggIng = explode(";",$TaggIng);
$UnterschiedlicheTags = array_count_values($TaggIng);
foreach($UnterschiedlicheTags as $Schluessel=>$Wert)
{
echo"<li>",
$Schluessel,
" (",
$Wert,
")</li>";
$i=$i+$Wert;
}
Aber das explode frißt zu viel Speicher und er verabschiedet sich eben mit dem "Allowed memory size..." Fehler.
Ich hab in der PHP.ini den erlaubten Speicher auf 16MB beschränkt und möchte das auch gar nicht erst in die Höhe setzen, weil die Anzahl der Datenbankeinträge ständig steigen wird und ich nicht jede Woche das Limit höher schrauben kann.
Meine Frage nun:
Kann ich das nicht auch so lösen dass mir die DB gleich das Resultat zurückliefert?
Eben "Sonnenschein" zB. 200 mal vorgekommen, "Herbstlaub" 500 mal und "Winterreifen" 300 mal.
Ursprünglich wollte ich die 5 Keywords auf 5 Splaten aufteilen, nur weiß ich dann überhaupt nicht mehr wie ich das ganze abfragen soll.
Ich hoffe, dass es hier jemanden gibt der mir helfen kann.
MySQL ist noch nicht so meine Stärke.
lg. und herzlichen Dank.
Werner
Comment