Bonjour,
Le code ci dessous(que vous pouvez tester chez vous) remplit un tableau localement dans une fonction.
A la sortie de la fonction, la mémoire occupée par le tableau n'est pas libérée.
Quelqu'un aurait-il une explication ?
Pour ce cas ci, la mémoire fait un bond de 2.75Mo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <?php function convert($size) { $unit=array('b','kb','mb','gb','tb','pb'); return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i]; } $start = memory_get_usage(true); function run($i) { $list = array(); for ($j=0;$j<=$i;$j++) { $list[] = '<p>Lorem ipsum dolor sit amet consectetuer id at Nunc tempus justo. Tempor mi Phasellus massa semper pulvinar vitae et interdum ipsum massa. Dui morbi Curabitur a Nullam consectetuer Vestibulum orci consequat id lacus. Phasellus metus ac Sed hendrerit leo wisi pellentesque ipsum lacus auctor. Suspendisse eleifend wisi ut Donec In pede Vestibulum quis tellus orci. Phasellus In semper amet et tellus nibh nibh Vestibulum facilisi.</p> <p>Integer volutpat penatibus consequat Integer In mauris Maecenas leo netus sit. Fusce in Aliquam pellentesque congue elit lacus diam amet porttitor tempus. Nunc velit Mauris Vestibulum eget eu mauris ut elit Ut tincidunt. Vivamus tellus condimentum dui adipiscing Aliquam dui justo tempus vitae Proin. Pede dolor a risus Lorem metus condimentum elit at penatibus tellus. </p> <p>Vitae congue Duis at felis vitae Ut massa ipsum elit hendrerit. Eu at Sed mauris eu felis et ut hendrerit Curabitur Morbi. Et quis laoreet sagittis convallis Curabitur mauris dignissim vitae et nec. Egestas Aenean elit Curabitur egestas sed velit nibh Donec ligula mauris. Donec cursus cursus amet ante ac.</p> <p>Aenean Curabitur wisi Donec ligula Curabitur volutpat fringilla et pede mi. Vestibulum enim semper Sed interdum platea nibh eget montes elit Cras. Libero porttitor volutpat nascetur Aenean metus Sed Lorem vel gravida justo. Donec nunc id urna congue ipsum id justo interdum id convallis. Convallis non penatibus penatibus nunc et eu Donec at consequat Nulla. </p>'; } } run(10000); $end = memory_get_usage(true); echo "[START] memory : " . convert($start) . "<br />"; echo "[END] memory : " . convert($end) . "<br />"; echo "[DIFF] " . convert($end-$start) . "<br />"; echo "[PEAK] " . convert(memory_get_peak_usage(true)) . "<br />";
Je précise que j'utilise PHP 5.3.5.







Répondre avec citation




Partager