- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/volume/cleaner.php
- Класс: BitrixDiskVolumeCleaner
- Вызов: Cleaner::countWorker
static function countWorker(int $ownerId = -1): int
{
$filter = [
'=AGENT_LOCK' => [VolumeTask::TASK_STATUS_WAIT, VolumeTask::TASK_STATUS_RUNNING],
];
if ($ownerId > 0)
{
$filter['=OWNER_ID'] = $ownerId;
}
$workerResult = VolumeTable::getList([
'runtime' => [
new EntityExpressionField('CNT', 'COUNT(*)'),
new EntityExpressionField('FILE_COUNT', 'SUM(FILE_COUNT)'),
new EntityExpressionField('UNNECESSARY_VERSION_COUNT', 'SUM(UNNECESSARY_VERSION_COUNT)'),
new EntityExpressionField('DROPPED_FILE_COUNT', 'SUM(DROPPED_FILE_COUNT)'),
new EntityExpressionField('DROPPED_VERSION_COUNT', 'SUM(DROPPED_VERSION_COUNT)'),
new EntityExpressionField('FAIL_COUNT', 'SUM(FAIL_COUNT)'),
],
'select' => [
'OWNER_ID',
'CNT',
'FILE_COUNT',
'UNNECESSARY_VERSION_COUNT',
'DROPPED_FILE_COUNT',
'DROPPED_VERSION_COUNT',
'FAIL_COUNT',
VolumeTask::DROP_UNNECESSARY_VERSION,
VolumeTask::DROP_TRASHCAN,
VolumeTask::EMPTY_FOLDER,
VolumeTask::DROP_FOLDER,
],
'group' => [
'OWNER_ID',
VolumeTask::DROP_UNNECESSARY_VERSION,
VolumeTask::DROP_TRASHCAN,
VolumeTask::EMPTY_FOLDER,
VolumeTask::DROP_FOLDER,
],
'filter' => $filter
]);
$totalFilesToDrop = 0;
$droppedFilesCount = 0;
$workerCount = 0;
$failCount = 0;
if ($workerResult->getSelectedRowsCount() > 0)
{
foreach ($workerResult as $row)
{
$workerCount += $row['CNT'];
$failCount += $row['FAIL_COUNT'];
if (VolumeTask::isRunningMode($row[VolumeTask::DROP_UNNECESSARY_VERSION]))
{
$totalFilesToDrop += $row['UNNECESSARY_VERSION_COUNT'];
$droppedFilesCount += $row['DROPPED_VERSION_COUNT'];
}
if (VolumeTask::isRunningMode($row[VolumeTask::DROP_TRASHCAN]))
{
$totalFilesToDrop += $row['FILE_COUNT'];
$droppedFilesCount += $row['DROPPED_FILE_COUNT'];
}
if (VolumeTask::isRunningMode($row[VolumeTask::DROP_FOLDER]))
{
$totalFilesToDrop += $row['FILE_COUNT'];
$droppedFilesCount += $row['DROPPED_FILE_COUNT'];
}
if (VolumeTask::isRunningMode($row[VolumeTask::EMPTY_FOLDER]))
{
$totalFilesToDrop += $row['FILE_COUNT'];
$droppedFilesCount += $row['DROPPED_FILE_COUNT'];
}
}
self::setProgressInfo((int)$row['OWNER_ID'], (int)$totalFilesToDrop, (int)$droppedFilesCount, (int)$failCount);
}
else
{
self::clearProgressInfo($ownerId);
}
return $workerCount;
}