Удаление всех переменных не завершая самого скрипта!

Статус
В этой теме нельзя размещать новые ответы.

bugargen

Местный житель
Регистрация
24 Апр 2008
Сообщения
234
Реакции
20
Как можно в ходе выполнения скрипта удалить все переменные, которые были ранее объявлены?

Просто мне нужно пустить скрипт по кругу, обычным циклом, а множество переменных могут иметь остатки данных после предыдущего шага цикла.

PHP:
<?php
#################
# Это 'index.php'
#################

for ( $i = 0; $i <= 5; $i++ )
{
    require_once 'script.php';

    # Здесь нужно очистить все переменные (кроме $i).
}

?>
PS: За 'script.php' скрывается множество других скриптов, которые вызывают друг-друга, он просто главный, скажем так, не считая 'index.php', в котором этот цикл собственно и запускается :)
 
В пхп нельзя просто взять массово убить все переменные кроме каких-то. Ведь тогда могу убится нужные, поэтому надо убивать точечно через unset();

PHP:
unset($var1, $var2, $var3);
 
Наверное лучше вызывать script.php из командной строки нужное количество раз.
 
tostrss написал(а):
В пхп нельзя просто взять массово убить все переменные кроме каких-то. Ведь тогда могу убится нужные, поэтому надо убивать точечно через unset();

PHP:
unset($var1, $var2, $var3);
Жаль, очень жаль :(
Хотя, по идеи, могли бы придумать такую ф-цию. Ведь это очевидно - есть переменные, которые PHP создаёт-мусолит, а есть, которые явно прописаны в скрипте - вот их и нужно удалять. В общем - х.з. :confused:
Я ещё когда начинал писать этот скрипт - думал, что может лучше подчищать за собой переменные, но смысла в этом небыло никакого, только с точки зрения грамотности кода. А теперь - понадобилось, но все их перебирать сложно. О причине такой необходимости ниже...

_AlexSK_ написал(а):
Наверное лучше вызывать script.php из командной строки нужное количество раз.
Можно и Крон заюзать. Но это всё мне не подходит совершенно!
Мне нужен не просто запуск скрипта несколько раз, а запуск скрипта столько раз, сколько встретится каталогов в указанной директории + к этому наименования этих каталогов идут в качестве передаваемого значения + счётчик.

В общем, придётся идти длинным путём...

Спасибо :)
 
В чем проблема вручную удалять крупные переменные? В конце концов, можете сами написать свой сборщик мусора, в чем проблема то?
 
Да, в таком случае, лучше пройтись по файлам-скриптам и подчистить за собой переменные. По-идее, это не займет много времени.
 
А лучше всего взять за правило перед использованием той переменной, где потенциально могут содержаться ненужные данные, всегда юзать unset() и проблем потом не будет ;)
 
1)require_once ? так он пордключится всего один раз. По определению
так что там должно быть require. ну или я не понял идею и прошу мне объяснить. Т.к. интересно )))
2) я хз конечно. просто пердположение --- вынеси require('script.php'); в отдельную функцию и в цикле вызывай уже эту функцию. Т.е. итерация заканчивается после выполнения scripts.php. При вызове функции все созданные в ней переменные являются локальными по умочанию. И при выходе из функции должны удаляться. -- В теории.


PHP:
<?php
#################
# Это 'index.php'
#################
// тут подключаешь файл
function req()
{
 require('script.php');
}

for ( $i = 0; $i <= 5; $i++ )
{
    req();
}

?>
 
Хотя, по идеи, могли бы придумать такую ф-цию. Ведь это очевидно - есть переменные, которые PHP создаёт-мусолит, а есть, которые явно прописаны в скрипте - вот их и нужно удалять. В общем - х.з. :confused:
В других языках для этого есть переменные с лексической областью видимости, т.е. видимые до конца текущего блока. PHP может быть когда-нибудь поправят, но точно не раньше 6-ой версии.
Вызывай файл внутри функции.
 
ZCFD написал(а):
я хз конечно. просто пердположение --- вынеси require('script.php'); в отдельную функцию и в цикле вызывай уже эту функцию. Т.е. итерация заканчивается после выполнения scripts.php. При вызове функции все созданные в ней переменные являются локальными по умочанию. И при выходе из функции должны удаляться. -- В теории.


PHP:
<?php
#################
# Это 'index.php'
#################
// тут подключаешь файл
function req()
{
 require('script.php');
}

for ( $i = 0; $i <= 5; $i++ )
{
    req();
}

?>

Похоже, это действительно работает ТОЛЬКО в теории :)
После использования этого метода - сразу полезла куча варнингов с указанием на то, что очередной параметр в очередную функцию не передался (этих ф-ций у меня множество, как и модулей, в которых они содержатся). х.з. почему так, не смог разобраться... Видимо, переменные перестали быть глобальными (где они объявляны таковыми), или ещё что-то...

Короче я решил пройтись по всем модулям и в конце каждого прописать уничтожение всех использованных в нём переменных. На будущее - возьму это за правило: в конце кода каждого модуля - отдельный блок, посвящённый обнулению/удалению переменных.

Спасибо :)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху