Ik zei dat het er niet bij stond he, niet dat ik beweer dat het ook daadwerkelijk niet gebeurt

Het zou me zeer verbazen als dat niet gebeurd eigenlijk, dat het niet bij mysql_free_result staat is logisch - er zijn immers ook genoeg mensen die een mysql resultset in global scope gebruiken en dan wordt'ie immers pas opgeruimt na het einde van je scriptexecutie.
Ook niet helemaal waar. Als je de result variabele een nieuwe waarde toekent (bijv. van die van een nieuwe query), dan zou ie dus ook opgeruimd moeten worden. Dat lijkt me toch wel reden om het erin te zetten.
Maargoed, meten is weten, ik zal zo even kijken of het effect heeft in de praktijk

Interessant idd

. Maar ongeacht de uitkomst van dat experiment blijf ik bij m'n punt dat het netjes is om 'm af te sluiten
.edit: En voer nu eens elke keer een andere query uit ipv de hele tijd dezelfde?

Met andere woorden, het geheugengebruik stijgt door het gebruik van mysql_free_result!
Sorry maar die conclusie slaat nergens op. Dat is pure causaliteit. Waarschijnlijker is dat de parsetree van het script groter is geworden door de extra call naar mysql_free_result (ik noem maar wat). De omgeving van het experiment is veranderd, dus je kunt uit de resultaten niet concluderen dat puur door de
call naar mysql_free_result() het geheugengebruik toeneemt. Probeer het zo eens:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| $freeResult = true;
function callDatabase()
{
global $freeResult;
$dbase = new forumDbase;
$query = mysql_query("SELECT om_name FROM om_menu", $dbase -> instance);
$result = mysql_fetch_assoc($query);
if ($freeResult)
mysql_free_result($query);
} |
En doe dan de test 2 keer, een keer met $freeResult op false, en daarna met $freeResult op true.
Ter vergelijking:
code:
1
2
3
| $a = 0;
echo memory_get_usage(); |
Output: 15536
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| $a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
$a = 0;
echo memory_get_usage(); |
Output: 18168
We mogen denk ik wel aannemen dat de oude waarde van $a niet gealloceerd blijft op een of andere manier
[
Voor 42% gewijzigd door
.oisyn op 14-09-2007 16:14
]