Originally posted by Кром
В общем случае да.
Почитай обязательно комментарии по [m]unset[/m].
Использование памяти можешь смотреть с помощью [m]memory_get_usage[/m]/ (комментарии тоже почитай).
Спасибо
-~{}~ 31.01.05 18:36:
К сожалению, unset не помогает, т.к. корень проблемы оказался не в "висящих" объектах.
У меня следующая ситуация. Есть робот, который поднимается по крону. У него есть список задач, которые он должен выполнить в виде массива ('имя_класса', 'файл_с_классом')
дальше он выполняется следующим образом:
PHP:
foreach ($jobs as $jobName => $jobFile) {
try {
print $jobName." start: ".(memory_get_usage()/1024)."kb\n";
$this->getLogger()->notice("Started $jobName => $jobFile");
require_once($jobFile);
//$job = new $jobName($this->getLogger());
//$job->execute();
//unset($job);
print $jobName." end: ".(memory_get_usage()/1024)."kb\n";
} catch (Exception $e) {
/*@var e Exception*/
$this->getLogger()->err($e->getMessage()."(Line: ".$e->getLine().", File: ".$e->getFile().")");
}
}
Так вот, даже в таком виде, как я написал, т.е. с закомментированными вызовами любых действий (включаемые файлы не содержать только классы и никакого выполняемого кода) результаты принтов следующие:
Код:
Transferer start: 406.1796875kb
Transferer end: 2119.4453125kb
Robot start: 2121.4375kb
Robot end: 5557.34375kb
Activator start: 5559.6171875kb
Activator end: 7532.8046875kb
HashCleaner start: 7534.9296875kb
HashCleaner end: 7882.9609375kb
если добавить сюда около 200кб реально используемых в процессе работы данных, то легко видеть, что скрипт без напряга вылетает за разрешенные 8мб
Может кто-нибудь что-нибудь посоветовать?
(Например, как инклюдить файлы в другом потоке)