php unset подскажите
Новая тема Написать ответ
# Вс Авг 31, 2008 3:22 pmIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21733Ответить с цитатой
задача...

скрипт загружает в память файл около 1 М с харда..

$array = file('');

но далее скрипт еще несколько сек работат
и все 1 М в памяти ненужен...

как принудительно осбободить конкретно Массив и переменную ?

для переменной $var такой способ очистки ОК:

$var = "";

?

unset() какую функцию выполняет..

если ему дать массив он его ПОЛНОСТЬЮ очистит память ?

вообщем надо как то полность очистить переменную/массив..

т.е. чтоб в памяти он несидел больше..

как сделать ?
# Вс Авг 31, 2008 5:00 pmblam Зарег.: 13.03.2008 ; Сообщ.: 240Ответить с цитатой
unset() destroys the specified variables.
должно быть достаточно, но рохоже не так все просто (
Иногда встречаю инфу, типа unset не помогает - память отжирается.

ps Сам не сталкивался с этим
# Вс Авг 31, 2008 7:44 pmIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21733Ответить с цитатой
blam писал(а):
unset() destroys the specified variables.
должно быть достаточно, но рохоже не так все просто (
Иногда встречаю инфу, типа unset не помогает - память отжирается.

ps Сам не сталкивался с этим



спасибо и на этом....

но вот я знаю два способа "сбить" массив

1) unset($arr);
2) $arr = array();

потом в массиве 0 элементов.. и 1 и 2 при сл.

но вот реально ли будет выгружен из памяти массив.. - вот что интересно..

я думаю всетаки 2) способ более эффективный..
т.к. мы там просто переозадаем массив.
# Вс Авг 31, 2008 8:23 pm-=Faraon=- Зарег.: 29.08.2008 ; Сообщ.: 114Ответить с цитатой
Должны работать 2 варианта..
хотя интересно надо проверить!
# Вс Авг 31, 2008 9:10 pmIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21733Ответить с цитатой
-=Faraon=- писал(а):
Должны работать 2 варианта..
хотя интересно надо проверить!



а как ты хочегь это сделать ? .... думаю только на своем дедике можно посмотреть ps ?

или вообще какой шел командой вывести список процессов (никсы) и чтобы там указывалося сколько уже времени сидит процесс и сколько памяти кушает ??

Должны работать 2 варианта

работают оба,
вернее массив "обнуляеться" и в 1 и в 2....

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

мне надо чтобы просто при ps или как еще мой процесс кот там висит незанимал бы столько МБ на сколько он открыл файлов.
# Вс Авг 31, 2008 9:35 pmIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21733Ответить с цитатой
reset($arr); -- сбрасывает тек. индекс у массива чтоли?
# Пн Сен 01, 2008 6:51 amcreator123 Зарег.: 25.07.2007 ; Сообщ.: 1145Ответить с цитатой
я точно не знаю как php работает с памятью, но даже если unset сделал, то совсем необязательно php отдаст сразу память системе. Он ее сам будет юзать повторно потом, может быть. Это типа оптимизация, чтоб туда-сюда память не кидать.
Ну а мож что-то еще. Главное что не все так просто может быть
# Пн Сен 01, 2008 9:41 amblam Зарег.: 13.03.2008 ; Сообщ.: 240Ответить с цитатой
IseeDeadPeople писал(а):
-=Faraon=- писал(а):
Должны работать 2 варианта..
хотя интересно надо проверить!



а как ты хочегь это сделать ? .... думаю только на своем дедике можно посмотреть ps ?

или вообще какой шел командой вывести список процессов (никсы) и чтобы там указывалося сколько уже времени сидит процесс и сколько памяти кушает ??

Должны работать 2 варианта

работают оба,
вернее массив "обнуляеться" и в 1 и в 2....

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

мне надо чтобы просто при ps или как еще мой процесс кот там висит незанимал бы столько МБ на сколько он открыл файлов.


Top - покажет память процесса в реальном времени в nixax

смотри memory_get_usage и тп, можно на php накидать скриптик для теста, если так интересно, хотя это давно IMHO уже затестили, надо только рогуглить.
# Пн Сен 01, 2008 11:48 pm-=Faraon=- Зарег.: 29.08.2008 ; Сообщ.: 114Ответить с цитатой
Тексты показали что оба варинта освобождают память!
Тестировал на PHP 5.2.6
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ
 
Любое использование материалов, размещенных на ArmadaBoard.com, без разрешения владельцев ArmadaBoard.com запрещено.