АРМАДА
php unset подскажите
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Вс Авг 31, 2008 3:22 pmДобавить в избранноеОтветить с цитатой
задача...

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

$array = file('');

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

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

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

$var = "";

?

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

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

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

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

как сделать ?
http://m.lsl.com/

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

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

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

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



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

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

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

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

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

я думаю всетаки 2) способ более эффективный..
т.к. мы там просто переозадаем массив.
http://m.lsl.com/

-=Faraon=- +
Опытный
Зарегистрирован: 29.08.2008
Сообщений: 114
Обратиться по нику
# Добавлено:Вс Авг 31, 2008 8:23 pmОтветить с цитатой
Должны работать 2 варианта..
хотя интересно надо проверить!
Фарма на пике популярности. Evapharmacy.ru – 5 лет с Вами!

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Вс Авг 31, 2008 9:10 pmОтветить с цитатой
-=Faraon=- писал(а):
Должны работать 2 варианта..
хотя интересно надо проверить!



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

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

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

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

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

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

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Вс Авг 31, 2008 9:35 pmОтветить с цитатой
reset($arr); -- сбрасывает тек. индекс у массива чтоли?
http://m.lsl.com/

creator123
Гуру
Зарегистрирован: 25.07.2007
Сообщений: 1146
Обратиться по нику
# Добавлено:Пн Сен 01, 2008 6:51 amОтветить с цитатой
я точно не знаю как php работает с памятью, но даже если unset сделал, то совсем необязательно php отдаст сразу память системе. Он ее сам будет юзать повторно потом, может быть. Это типа оптимизация, чтоб туда-сюда память не кидать.
Ну а мож что-то еще. Главное что не все так просто может быть
<----- если понравился пост, жмакай сюды <-----

blam
Опытный
Зарегистрирован: 13.03.2008
Сообщений: 240
Обратиться по нику
# Добавлено:Пн Сен 01, 2008 9:41 amОтветить с цитатой
IseeDeadPeople писал(а):
-=Faraon=- писал(а):
Должны работать 2 варианта..
хотя интересно надо проверить!



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

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

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

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

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

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


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

смотри memory_get_usage и тп, можно на php накидать скриптик для теста, если так интересно, хотя это давно IMHO уже затестили, надо только рогуглить.

-=Faraon=- +
Опытный
Зарегистрирован: 29.08.2008
Сообщений: 114
Обратиться по нику
# Добавлено:Пн Сен 01, 2008 11:48 pmОтветить с цитатой
Тексты показали что оба варинта освобождают память!
Тестировал на PHP 5.2.6
Фарма на пике популярности. Evapharmacy.ru – 5 лет с Вами!
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры