Your IP : 3.21.37.252


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/controller/tools/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/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);
	}
}