Current Path : /var/www/axolotl/data/www/msk.axolotls.ru/bitrix/modules/controller/tools/ |
Current File : /var/www/axolotl/data/www/msk.axolotls.ru/bitrix/modules/controller/tools/cron_tasks.php |
<?php $DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/../../../.."); /*Command line arguments*/ $limit = 10000; $show_eta = false; for ($i = 1; $i < count($argv); $i++) { if (preg_match("/^--limit=([0-9]+)\$/", $argv[$i], $match)) { $limit = intval($match[1]); } elseif (preg_match("/^--show-eta=([yYnN])\$/", $argv[$i], $match)) { $show_eta = $match[1] === "y" || $match[1] === "Y"; } elseif (preg_match("/^--document-root=(.+)\$/", $argv[$i], $match) && is_dir($match[1])) { $DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"] = $match[1]; } else { fwrite(STDERR, "usage: [--show-eta=y] [--limit=10000] [--document-root=/var/www/html]\n"); exit(1); } } /*Bitrix init starts here*/ define("NO_KEEP_STATISTIC", true); define("NOT_CHECK_PERMISSIONS",true); define("BX_CRONTAB", true); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); @set_time_limit (0); @ignore_user_abort(true); @session_destroy(); while(@ob_end_clean()); if (CModule::IncludeModule("controller")) { if (!$show_eta) { CControllerTask::ProcessAllTask($limit); } else { $interval = 60; //Seconds $last_count = false; do { $stime = microtime(true); $rs = CControllerTask::GetList(array(), array( "=STATUS" => array('P', 'N', 'L'), ), true); $current_count = $rs->Fetch()["C"]; if ($last_count === false) { echo sprintf("%s tasks remains: %d\n" ,date("Y-m-d H:i:s") ,$current_count ); } else { $tasks_done = $last_count - $current_count; if ($tasks_done > 0 && $current_count > 0) { $tasks_per_second = $tasks_done / $interval; $seconds_remains = $current_count / $tasks_per_second; $eta = time() + $seconds_remains; $hours_remains = intval($seconds_remains / 3600); $seconds_remains -= $hours_remains * 3600; $minutes_remains = intval($seconds_remains / 60); $seconds_remains -= $minutes_remains * 60; $seconds_remains = intval($seconds_remains); echo sprintf("%s tasks remains: %d; done: %d; per second: %0.2f; todo: %02d:%02d:%02d; eta: %s\n" ,date("Y-m-d H:i:s") ,$current_count ,$tasks_done ,$tasks_per_second ,$hours_remains, $minutes_remains, $seconds_remains ,date("Y-m-d H:i:s", $eta) ); } else { echo sprintf("%s tasks remains: %d; done: %d\n" ,date("Y-m-d H:i:s") ,$current_count ,$tasks_done ); } } $last_count = $current_count; usleep(($interval - (microtime(true) - $stime)) * 1000000); } while ($current_count); } }