- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/general/controllertask.php
- Класс: CControllerTask
- Вызов: CControllerTask::ProcessAllTask
static function ProcessAllTask($limit = 10000)
{
global $DB;
//1. Finish partial
//2. Execute new tasks
//3. Retry failed tasks
//4. Run low priority tasks
foreach (array('P', 'N', 'R', 'L') as $status)
{
if ($limit > 0)
{
$dbrTask = $DB->Query($DB->TopSQL("
SELECT ID, RETRY_COUNT
FROM b_controller_task
WHERE STATUS = '$status'
".($status=='R'? 'and DATE_EXECUTE < date_sub(now(), interval RETRY_TIMEOUT second)': '')."
ORDER BY ID ASC
", $limit));
while ($arTask = $dbrTask->Fetch())
{
$new_status = CControllerTask::ProcessTask($arTask["ID"]);
while ($new_status === "P")
{
$new_status = CControllerTask::ProcessTask($arTask["ID"]);
}
if ($new_status === "F" && $arTask["RETRY_COUNT"] > 0)
{
CControllerTask::PostponeTask($arTask["ID"], $arTask["RETRY_COUNT"]-1);
}
$limit--;
if ($limit <= 0)
{
break;
}
}
}
}
return true;
}