Your IP : 172.28.240.42


Current Path : /var/www/html/clients/amz.e-nk.ru/download/
Upload File :
Current File : /var/www/html/clients/amz.e-nk.ru/download/download_balance.php

<?
// хосты для распределения нагрузки скачиваний с вероятностью выбора: 70, 50
/*
$arrHOSTS = array(
	"70" => "http://download1.agnitum.com", 
	"50" => "http://download2.agnitum.com"
);
*/

// интервал в течении которого не будут регистрироваться события скачивания от одного посетителя сайта
$DOWNLOAD_EVENT_INTERVAL = 21600; // сек.


function initialize_params($url)
{
	if (strpos($url,"?")>0)
	{
		$par = substr($url,strpos($url,"?")+1,strlen($url));
		$arr = explode("#",$par);
		$par = $arr[0];
		$arr1 = explode("&",$par);
		foreach ($arr1 as $pair)
		{
			$arr2 = explode("=",$pair);
			global $$arr2[0];
			$$arr2[0] = $arr2[1];
		}
	}
}

$arr1 = explode("?",$_SERVER["REQUEST_URI"]); 
$URI = $arr1[0];
$path = dirname($URI);
$file = basename($URI);
$path .= "/files/";

if(file_exists($_SERVER["DOCUMENT_ROOT"].$path.$file))
{
	set_time_limit(0);
	session_cache_limiter('');
	session_start();
	initialize_params($_SERVER["REQUEST_URI"]);

	$cur_pos = 0;
	$p = strpos($_SERVER["HTTP_RANGE"], "=");
	if($p>0)
	{
		$bytes = substr($_SERVER["HTTP_RANGE"], $p+1);
		$p = strpos($bytes, "-");
		if($p!==false) $cur_pos = intval(substr($bytes, 0, $p));
	}
	include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
	if (CModule::IncludeModule("statistic"))
	{
		if ($cur_pos<=0) // проверим скачивается ли с самого начала
		{
			if (strlen($event1)<=0 && strlen($event2)<=0)
			{
				$event1 = "download";
				$event2 = $file;
			}
			$e = $event1."/".$event2."/".$event3;
			if (!in_array($e, $_SESSION["DOWNLOAD_EVENTS"])) // проверим не скачивался ли в данной сессии
			{
				$w = CStatEvent::GetByEvents($event1, $event2);
				$wr = $w->Fetch();
				$z = CStatEvent::GetEventsByGuest($_SESSION["SESS_GUEST_ID"], $wr["EVENT_ID"], $event3, $DOWNLOAD_EVENT_INTERVAL);
				if (!($zr=$z->Fetch())) // проверим не скачивал ли посетитель за последние 6 часов
				{
					CStatistic::Set_Event($event1, $event2, $event3);
					$_SESSION["DOWNLOAD_EVENTS"][] = $e;
				}
			}
		}
	}
	ob_end_clean();
	session_write_close();

	while (list($key,$value)=each($arrHOSTS)) $max_weight += intval($key);
	mt_srand ((double) microtime() * 1000000); 
	$rand = $max_weight*(rand()/getrandmax());
	reset($arrHOSTS);
	while (list($key,$value)=each($arrHOSTS))
	{
		if($rand>=$step && $rand<=$step+intval($key))
		{
			$host=$value; 
			break;
		}
		$step += intval($key);
	}
	if (strlen($host)<=0) $host="http://".$_SERVER["HTTP_HOST"];

	header("Request-URI: ".$host.$path.$file); 
	header("Content-Location: ".$host.$path.$file); 
	header("Location: ".$host.$path.$file); 
}
else
{
	include($_SERVER["DOCUMENT_ROOT"]."/404.php");
}
?>