Tom: fetch array in fetch array

Beitrag lesen

Hello,

if($array[blubb]!=0) {
    $string=   abfrage aus anderen tabelle (genau ein datensatz betroffen; vergleichbar mit: $id vorhanden, titel dazu wird gesucht)
    $db->query($string);

an dieser stelle überschreibst du dir höchstwahrscheinlich dein erstes abfrage-ergebnis - weil du hier wiederum $db dafür nutzt.

Noch viel schlimmer. Er überschreibt nicht das Ergebnis, sondern die Handlevariable. Und damit ist das alte Handle weg. Er kann also den Speicherbereich, den die Abfrage belegt hat, nicht wieder freigeben. Lost Handles sind ein häufiges Problem dafür, dass Abfragen mittels PHP und MySQL (oder anderen DBMS) langsam werden. MySQL stellt standardmäßig nur 9 Handles zur Verfügung. Spätestens beim 10ten gibts die sinnige Fehlermeldung "10 ist not a valid result ressource".

Ich wollte immer schon mal raussuchen, wo man die Anzahl der Handles für Resultsets einstellen kann in MySQL und was vor allem passiert, wenn man mehrere größere Abfragen nicht wieder freigibt, also sehr viel Speicher verbraucht/benutzt.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau