Каков наилучший способ управления памятью, используемой строками в массиве PHP? - PullRequest
0 голосов
/ 11 октября 2019

В PHP я использую массив для создания содержимого HTML-страниц моего сайта. Я также использую Symfony 2, но не веточку. Это пример, который создает простую полууникальную страницу:

$strMAINs = [];

$r          = rand( 1, 99999 ); // $r needs to be generated on the server for some
                                // reason, so can't generated by the client and then
                                // sent back when the form that contains this code is
                                // submitted.  Why isn't important.

$strMAINs[] = '<table>';
$strMAINs[] =   '<tr>';
$strMAINs[] =     '<td>';
$strMAINs[] =       'Input a number from 1 to 99,999:';
$strMAINs[] =     '</td>';
$strMAINs[] =     '<td>';

                    // Create a random default value ...
$strMAINs[] =       '<input id="TextInput" value="' . $r . '" />';

$strMAINs[] =     '</td>';
$strMAINs[] =   '</tr>';
$strMAINs[] = '</table>';

$strMAIN = implode( PHP_EOL, $strMAINs );

// Note, in my web-app the strings can be a lot longer.

// Send the content $strMAIN to the browser using the appropriate Symfony 2 function.

На данный момент я могу позволить Symfony / PHP освободить / освободить память, используемую строкой $ strMAIN и строками массива $ strMAINs, когдародительская функция, которая владеет этими переменными, завершает свою работу и позволяет сборщику мусора самостоятельно обрабатывать память или использовать команду unset в массиве $ strMAINs, но не в $ strMAIN, поскольку ей нужно свое значение для функции Symfony, которая отправляет страницу вbrowser.

Однако из того, что я читал о команде unset, кажется, что переменные в команде unset освобождают свою память, но она не обязательно доступна другому пользователю моего сайта, пока сборщик мусораприступает к выполнению своей работы.

Я также обеспокоен утечками памяти.

Просматривая команду unset PHP, я увидел, что установка массива в значение NULL может привести к тому, что память будетвыпущен и доступен быстрее.

...