При использовании SetTimeOut() происходит утечка памяти:
Есть некая форма (пакетного сервера):
PHP код:
void BatchMonitor()
{
BatchOrder batchOrder;
str action;
BatchUserMsg batchUserMsg;
BatchUserMsg batchUserMsg_Del;
userId curUser;
int sesId;
UserMessage curMsg;
;
ActionText.text(strfmt('Обработка заданий в группе "%1". \n\nЗаданий в очереди: %2'
, currentCluster
, BatchOrder::getWaitBatchToCluster(currentCluster)));
if (!BatchOrder::isBusy(currentCluster))
{
if (element.isFound(currentCluster))
{
if (currentCluster)
{
select firstonly batchOrder
order by RecId
where batchOrder.ClusterId == currentCluster
&& batchOrder.BatchNowStatus == BatchNowStatus::Wait;
// ActionList.add(strfmt("%1: Выполняется пакет '%2'", time2str(TimeNow(), 1, 1), batchOrder.BatchId));
try
{
action = ClusterHandler::onHandle(currentCluster, batchOrder.BatchId);
}
catch (Exception::Error)
{
BatchOrder::changeStatus(batchOrder.BatchId, BatchNowStatus::Error);
info::logAddLine(strfmt("%1: Ошибка в обработке пакета '%2'.", time2str(TimeNow(), 1, 1), batchOrder.BatchId));
}
if (action)
info::logAddLine(strfmt("%1", action));
this.setTimeOut("BatchMonitor", 1, false);
}
}
}
this.setTimeOut("BatchMonitor", timer * 1000, false);
}
Сервер за 3-4 суток сжирает до 1 Gb оперативки, про своп ваще молчу