<?php
set_time_limit(0);
ini_set('max_execution_time', 0); //300 seconds = 5 minutes
ini_set('memory_limit', '2048M');
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
include("class_mysql.php");
$db = DataBase::getInstance();

$errores_varios='';
$cant_cots=0;
$log_pasos='';

require '../bina/vendor/autoload.php';
$api = new Binance\API("sBdcJ3KHn3WzIxDWzAiGb0i1D7Gy6H2pRpHDwCAXcqC2EBPtpu3ahcN6RFnW4Vil","QkdHdGISW8TtfQsb5vYRaUfn75kGSe589dKQEFm4ypDEF1gOMBIAoSDwgSm29nUd");	


//exit;
echo 'empieza';
grabarlog(1,'Inicia sistema grabar cotizaciones');

$sql="SELECT grabarcot FROM inver_sistema WHERE id_sist=1";
$db->cargar_sql($sql);
$rs_sistema=$db->cargar_aviso();



if ($rs_sistema->grabarcot==0){
  echo 'Offline grabarcots - dormir ';
  sleep(200); 
  exit; 
}

$sql="SELECT id_mon, simbolo, simbolo2 FROM inver_cartera WHERE simbolo2='USDT' or (simbolo2='BTC' and solo_btc=1)";
$db->cargar_sql($sql);
$rs_monedas=$db->cargar_avisos();

if (count($rs_monedas)<=5){
	echo 'No cargar Monedas, dormir ';
	grabarlog(2,'No cargaron monedas, envia a dormir unos minutos');
  sleep(400);
  exit;
}

$mostrar='a';
$count=0;

$cont=0;
$cont2=0;

foreach ($rs_monedas as $mon){
  //echo 'bb';
  $simbolo_total=strtoupper($mon->simbolo) . strtoupper($mon->simbolo2);
	$arr_monedas[$simbolo_total]=$mon->id_mon;	
}


$api->ticker(false, function($api, $symbol, $ticker) {
  global $arr_monedas;
  global $sql_insert;
  global $db;
  global $cont;
  global $cont2;
  global $errores_varios;
  global $cant_cots;
  $cont2=$cont2+1;
  //echo ' -' . $cont2;
  //echo ' * ' . $ticker["symbol"];
  if (isset($arr_monedas[$ticker["symbol"]]) and is_numeric($arr_monedas[$ticker["symbol"]])){
    echo '-SI ';
  	$cont=guardarCot($ticker);
	$cant_cots=$cont;
  	//echo $cont . ' '; 
  }else{
	// echo '|';
  }
  
  if ($cont % 200==0 and $cont>1){
	  echo '<br>Entra, $cont: ' . $cont . '<br>';
	//Insertar SQL
	$sql_insert=substr($sql_insert, 0, -1);
	$sqla="INSERT INTO inver_cots (id_moneda,simbolos, fechaHora,close,open,high,low, volume, quotavolume) VALUES " . $sql_insert; 
	$db->cargar_sql($sqla);
	//echo $sql . '-----------------------------------';
	if ($db->ejecutar_sql()){
			
	}else{
		echo 'ERROR';	
		$errores_varios.='error Ejecutar consulta sql';
	}
	//Volver variable a ''
	$sql_insert='';
	
  }
  
   if($cont >= 191600 or $cont2>=191600) {
	   $log_pasos.='El contador llega a completarse';
       echo 'Contador: ' . $cont;
      $endpoint = '@ticker';
      $api->terminate( $endpoint );
       if ($cont<=100){
           echo 'Falla cot: dormir 2 minutos: ';
		   grabarlog(2,'Falla cotizacion, envia a dormir unos minutos');
           sleep(200);
          exit;
       }
	  exit;
	 // echo 'Sale';
   }

} );

//$db->freeResults();




function guardarCot($ticker){	
	global $cont;
	global $arr_monedas;
	global $sql_insert;
	$cont=$cont+1;

	$sql_insert.="(" . $arr_monedas[$ticker["symbol"]] . ",'" . $ticker["symbol"] . "', now(),'" . $ticker["close"] . "','" . $ticker["open"] . "','" . $ticker["high"] . "','" . $ticker["low"] . "', '" . $ticker["volume"] . "', '" . $ticker["quoteVolume"] . "'),";
		
		

   return $cont;	

}

if ($cont2<=100 and $cont2>=1){
  echo 'Falla tickerx: dormir 3 minutos - Valor cont2= ' . $cont2 . ' | ';
  grabarlog(2,'Falla ticker, envia a dormir unos minutos');
	$log_pasos.='-Falla contador o ticker';
	if (1==2){
		sleep(200);	
	}
  exit;
}


function grabarlog($tipo,$msg){
	global $db;
	$sql="insert into grabarcot_log (tipo, msg) VALUES ($tipo, '" . $msg . "')";
	$db->cargar_sql($sql);
	$db->ejecutar_sql();
}





$tiempo_total=0;
grabarlog(1,'FINALIZA CORRECTAMENTE. Cot:' . $cant_cots . ' / ' . $cont . ' / ' . $cont2 . ' Pasos: ' . $log_pasos . ' Errores varios: ' . $errores_varios . ' Tiempo total: ' . $tiempo_total);
?>











