|
|
|
задача...
скрипт загружает в память файл около 1 М с харда..
$array = file('');
но далее скрипт еще несколько сек работат
и все 1 М в памяти ненужен...
как принудительно осбободить конкретно Массив и переменную ?
для переменной $var такой способ очистки ОК:
$var = "";
?
unset() какую функцию выполняет..
если ему дать массив он его ПОЛНОСТЬЮ очистит память ?
вообщем надо как то полность очистить переменную/массив..
т.е. чтоб в памяти он несидел больше..
как сделать ? |
|
|
|
|
|
unset() destroys the specified variables.
должно быть достаточно, но рохоже не так все просто (
Иногда встречаю инфу, типа unset не помогает - память отжирается.
ps Сам не сталкивался с этим |
|
|
|
|
|
blam писал(а): |
unset() destroys the specified variables.
должно быть достаточно, но рохоже не так все просто (
Иногда встречаю инфу, типа unset не помогает - память отжирается.
ps Сам не сталкивался с этим
|
спасибо и на этом....
но вот я знаю два способа "сбить" массив
1) unset($arr);
2) $arr = array();
потом в массиве 0 элементов.. и 1 и 2 при сл.
но вот реально ли будет выгружен из памяти массив.. - вот что интересно..
я думаю всетаки 2) способ более эффективный..
т.к. мы там просто переозадаем массив. |
|
|
|
|
|
Должны работать 2 варианта..
хотя интересно надо проверить! |
|
|
|
|
|
-=Faraon=- писал(а): |
Должны работать 2 варианта..
хотя интересно надо проверить!
|
а как ты хочегь это сделать ? .... думаю только на своем дедике можно посмотреть ps ?
или вообще какой шел командой вывести список процессов (никсы) и чтобы там указывалося сколько уже времени сидит процесс и сколько памяти кушает ??
Должны работать 2 варианта
работают оба,
вернее массив "обнуляеться" и в 1 и в 2....
но может там какой то участок памяти ...............
мне надо чтобы просто при ps или как еще мой процесс кот там висит незанимал бы столько МБ на сколько он открыл файлов. |
|
|
|
|
|
reset($arr); -- сбрасывает тек. индекс у массива чтоли? |
|
|
|
|
|
я точно не знаю как php работает с памятью, но даже если unset сделал, то совсем необязательно php отдаст сразу память системе. Он ее сам будет юзать повторно потом, может быть. Это типа оптимизация, чтоб туда-сюда память не кидать.
Ну а мож что-то еще. Главное что не все так просто может быть |
|
|
|
|
|
IseeDeadPeople писал(а): |
-=Faraon=- писал(а): |
Должны работать 2 варианта..
хотя интересно надо проверить!
|
а как ты хочегь это сделать ? .... думаю только на своем дедике можно посмотреть ps ?
или вообще какой шел командой вывести список процессов (никсы) и чтобы там указывалося сколько уже времени сидит процесс и сколько памяти кушает ??
Должны работать 2 варианта
работают оба,
вернее массив "обнуляеться" и в 1 и в 2....
но может там какой то участок памяти ...............
мне надо чтобы просто при ps или как еще мой процесс кот там висит незанимал бы столько МБ на сколько он открыл файлов.
|
Top - покажет память процесса в реальном времени в nixax
смотри memory_get_usage и тп, можно на php накидать скриптик для теста, если так интересно, хотя это давно IMHO уже затестили, надо только рогуглить. |
|
|
|
|
|
Тексты показали что оба варинта освобождают память!
Тестировал на PHP 5.2.6 |
|
|
|
|
|