@bal_square

Статистика Яндекс.Метрика для 10 аккаунтов, возможно ли ускорить?

Всем привет, написал ф-ю, которая подгружает данные с яндекс метрики и выводит в нужном для меня виде на экран, у меня есть массив clientLogin и token, хранящие данные для входа, дело в том, что при увеличении числа аккаунтов, к примеру до 10, запросы происходят ну очень долго, подскажите как ускорить код и возможно ли вообще это? пробовал написать код для яндекс директа и подгружать статистику оттуда, но там еще дольше получается
/*Подгружаем данные с яндекс.метрики*/
function metric_request ($date,$metric,$token,$direct_login){
	
$ids_temp=file_get_contents('https://api-metrika.yandex.ru/management/v1/counters?oauth_token='.$token);
$ids_temp_o=json_decode($ids_temp);
$ids = array();
$size=count($ids_temp_o->counters);
	
for($i=0;$i<$size;$i++){
$ids[$i]=$ids_temp_o->counters[$i]->id;
}
	
	
$query = array(
    'date1' => $date,
    'date2' => 'today',
    'ids' => $ids,
    'metrics' => $metric,
    'oauth_token' => $token,
   	'direct_client_logins'=> $direct_login,
);
$response=file_get_contents('https://api-metrika.yandex.ru/stat/v1/data?'.http_build_query($query));
$response_o=json_decode($response);
return $response_o;
};	

$size=count($clientLogin);
for ($i=0;$i<$size;$i++){
	
		$ClicksCost_7days=metric_request ('7daysAgo','ym:ad:<currency>AdCost',$token[$i],$clientLogin[$i]);
		$MidConsumption=$ClicksCost_7days->totals[0] / 7;
		$balance = get_amount_apiv4($token[$i],$clientLogin[$i]);
		$Days_to_Paid = round($balance/$MidConsumption , 0, PHP_ROUND_HALF_DOWN);

		$ClicksAmount_Cost_today=metric_request('yesterday','ym:ad:clicks,ym:ad:<currency>AdCost',$token[$i],$clientLogin[$i]);
		
	
		$MidCostToday=round($ClicksAmount_Cost_today->totals[1] / $ClicksAmount_Cost_today->totals[0],2,PHP_ROUND_HALF_UP);
	
		$Denied = metric_request('yesterday','ym:s:bounceRate',$token[$i],$clientLogin[$i]);
	
	 	echo "<div id=\"main_form\">
		 
		 <p class=\"text\" style=\"background:chocolate;\">Логин: {$clientLogin[$i]}</p>
		 <p class=\"text\">Ниша: просто текст</p>
		 <p class=\"text\">Оставшийся бюджет: ".$balance." RUB</p>
		 <p class=\"text\">Необходимо пополнение: ".$Days_to_Paid." день(дней)</p>
		 <p class=\"text\">Количество кликов (за сегодня): ".$ClicksAmount_Cost_today->totals[0]."</p>
		 <p class=\"text\">Средняя цена кликов (за сегодня): ".$MidCostToday." RUB</p>
		 <p class=\"text\">Отказы (за сегодня): ".round($Denied->totals[0],2, PHP_ROUND_HALF_UP)." %</p>
		 <p class=\"text\">Расход (за сегодня): ".round($ClicksAmount_Cost_today->totals[1],2, PHP_ROUND_HALF_UP)." RUB</p></div>
		 "; 
		
	   
   }
  • Вопрос задан
  • 320 просмотров
Решения вопроса 1
Скорее всего Yandex.API не ускорить.
Используйте фоновый процесс для регулярного обновления данных метрики и сохранения их в некой БД (запускаемый по крону, например), а в своём коде выводите данные из этого кеша в БД.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы