Автор Тема: Как освободить память при работе скрипта?  (Прочитано 4017 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Mefisto

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 151
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Несколько вопросов:

1. каким образом можно удалить из памяти сервера использованные переменные скрипта? что делает и поможет ли при этом функция unset().

2. локальные переменные функции уничтожаются сразу после окончания работы функции, или их тоже надо уничтожать "вручную"?

спасибо за ответы
Mefisto

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Как освободить память при работе скрипта?
« Ответ #1 : 25 Декабря 2006, 18:06:16 »
1) поможет
2) да

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
Как освободить память при работе скрипта?
« Ответ #2 : 07 Января 2007, 00:29:33 »
unset() очень мощная вещь при освобождении памяти.
А ещё полезно для временных переменных использовать во всём скрипте одинаковые имена, напр., $a, $b. Тогда они будут заменять друг друга и unset() не нужен будет -> хоть на чуть-чуть но красивее

Цитировать
Поведение unset() внутри функции может варьироваться в зависимости от тог, переменную какого типы вы пытаетесь разрушить.

Если глобализированная переменная unset() внутри функции, то разрушается только локальная переменная. Переменная в вызывающем окружении останется с тем же значением, что и до вызова unset().

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Как освободить память при работе скрипта?
« Ответ #3 : 08 Января 2007, 14:32:26 »
Цитировать
А ещё полезно для временных переменных использовать во всём скрипте одинаковые имена, напр., $a, $b.

Весьма спорно.

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
Как освободить память при работе скрипта?
« Ответ #4 : 08 Января 2007, 18:36:23 »
hanslinger
Не спорю, спорный вопрос. Конечно здесь надо подходить осторожно.
Например, такой случай.

$a=file($file);
foreach ($a as $v){
if (trim($v)==\'\'){continue;}
$b=explode(\'|\',$v);
if (trim($b[1])==\'\'){
continue;
} else {
$redirects[$b[0]]=trim($b[1]);
}
}


Здесь используются 4 переменные. 3 из них временные: $a, $b, $v - в их названии незачем придумывать колесо. 1 из них только используется дальше - $redirects - она имеет понятное имя.
А в дальнейшем надо просто дать себе установку использовать $a, $b, $v только в целях временной переменной.
[OFF]
Кстати, к вопросу об особождении памяти. Чтобы ускорить скрипт, главное - найти места, которые выполняются долго. Подсчёт времени выполнения отдельных участков - лично мне это очень помогло при создании большого сайта (биболиотеки программиста :)).[/OFF]

 

Sitemap 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