include/require в цикле

EntC

Новичок
include/require в цикле

Возник вопрос - при использовании функции include/require в цикле ,при необходимости видоизменять подгружаемый скрипт, новый грузится, но старый ведь не удаляётся из памяти...Как мне выгрузить старый, больше не нужный код ? (Либо я что-то забыл и вопрос глупый, либо проблема есть?).
 

EntC

Новичок
а как вы предлагаете загрузить новый код и старый выгрузить ?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
EntC
1. Сходите по ссылке.
2. Объясните что Вам нужно более подробно, а главное зачем.
 

EntC

Новичок
Сходил по ссылке и это совершенно не устраивает моим требованиям.
Мне надо динамически изменять скрипт. Скрипт состоит из блоков, и один из блоков должен уметь изменяться на лету , работая в цикле (но подгружаться тогда,когда это потребуется).
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
1. Скрипт динамически изменяться не может. это файл.
2. Так-же не може изменяться на лету "один из блоков" в этом скрипте.

Изменяться может в скрипте результат(ход работы, алгоритм) выполнения скрипта (или функции) согласно входным параметрам.

-~{}~ 24.08.07 23:53:

А теперь, пожалуйста
Объясните что Вам нужно более подробно,
Вашу задачу на конкретном примере, желателельно Вашем, а не высосаном из пальца
 

EntC

Новичок
Скрипт ,естественно,сам не меняется. Без метаморфизма ,слава богу ). Но, например ,я внёс изменения в скрипт и хочу чтобы новые изменения вступили в силу. Простым инклудом всё почти замечательно получается,только старый код висит в памяти. Вопрос- как избавится от этого кода, или может быть есть какие мысли как иначе можно реализовать идею.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
EntC
Вопрос- как избавится от этого кода, или может быть есть какие мысли как иначе можно реализовать идею.
Свою мысль я Вам уже выразил - ссылкой в первом посте.

Выносите "изменения" в функцию, инклюдите скрипт с этой ф-цией. Потом вызываете эту ф-цию с нужными параметрами.
сколько нужно раз.

-~{}~ 25.08.07 00:30:

Инклюдите _один_ раз.
 

cDLEON

Онанист РНРСlub
dimagolov
но старый ведь не удаляётся из памяти...
Наверное это.
Вообще...ИМХО. Не удаляется функция, созданная create_function потому что в переменной лежит её название, а не она сама.
 

EntC

Новичок
Да,получается так, что код добавляется, а не переписывается (в памяти) ...
dimagolov - это не та же тема, там был вопрос по поводу реализации... а тут обсуждаются последствия.
Можно,кнечно, забыть про то,что у нас там накапливается в памяти код, но это ведь не грамотно.
 

maxru

МИФИст
Сколько должен работать скрипт? В режиме демона или на его выполнение уходят доли секунды?
Если второе, то с какой стати волноваться, что в памяти остается "какой-то" код?
Волнуйтесь тогда уж и за процессорные ресурсы и ресурсы памяти, расходующиеся на повторный парсинг подключаемого файла.
 

cDLEON

Онанист РНРСlub
Можно,кнечно, забыть про то,что у нас там накапливается в памяти код, но это ведь не грамотно.
Да не код там накапливается. Попробуй забыть про create_function и потестить вариант с include который через return возращает результат работы.
 

EntC

Новичок
maxru - Скрипт работает в режиме демона.
cDLEON - не понял мысли, можно поконретней.
 

StUV

Rotaredom
maxru - Скрипт работает в режиме демона
как часто изменяется код и чем это вызвано ?

-~{}~ 25.08.07 17:35:

зы: есть та же проблема
при обновлении либ приходится рестартовать демоны - это случается не так часто и может быть "автоматизировано" тривиальным sh-скриптом
 

cDLEON

Онанист РНРСlub
PHP:
<?php
function inc()
	{
	return include("test2.php");
	}
echo "<pre>";
for($i=0;$i<10000;$i++)
	{
	var_dump(inc());
	var_dump(memory_get_usage());
	}
echo "</pre>";
?>
----------
File test2.php
PHP:
<?
#Всевозможный мусор!!!!!
$arr=Array();
for($i=0;$i<1000;$i++)
	$arr[$i]=$i*20;

return memory_get_usage();
?>
#####
Output#
#####
int(138000)
int(91208)
int(138000)
int(91208)
int(138000)
int(91208)
int(138000)
int(91208)
int(138000)
int(91208)
int(138000)
int(91208)
int(138000)
int(91208)
И т.д.
Теперь понятно?
 
Сверху