<?php
ini_set('max_execution_time', 600); //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");
include("ssh_grabarFunc.php");
$db = DataBase::getInstance();
require '../bina/vendor/autoload.php';
$api = new Binance\API("sBdcJ3KHn3WzIxDWzAiGb0i1D7Gy6H2pRpHDwCAXcqC2EBPtpu3ahcN6RFnW4Vil", "QkdHdGISW8TtfQsb5vYRaUfn75kGSe589dKQEFm4ypDEF1gOMBIAoSDwgSm29nUd");
$log = array();
$log[] = 'start';
$logFile = 'ssh_grabar_log';
$cont2=0;
$pausa = 5;
$controlFile = 'ssh_grabar_last_mod.txt';
static $contadorRepeticiones = 0;
$rs_monedas = array();
$rs_sistema = array();

$tiempoModificacionActual = filemtime($_SERVER['SCRIPT_FILENAME']);
establecerUltimaModificacion($tiempoModificacionActual);

$contadorRepeticiones++;
iniciar() ?: fin('finaliza Repeticion');
foreach ($rs_monedas as $mon) {
  $simbolo_total = strtoupper($mon->simbolo) . strtoupper($mon->simbolo2);
  $arr_monedas[$simbolo_total] = $mon->id_mon;
}


$cont = 0;




$api->ticker(false, function ($api, $symbol, $ticker) {
  global $cont;
  global $arr_monedas;
  global $sql_insert;
  global $db;
  global $cont2;
  global $errores_varios;
  global $cant_cots;
  $cont2 = $cont2 + 1;
  //print_r($ticker);
  //echo ' -' . $cont2;
  //echo ' * ' . $ticker["symbol"];
  if (isset($arr_monedas[$ticker["symbol"]]) and is_numeric($arr_monedas[$ticker["symbol"]])) {
    $cont = guardarCot($ticker);
    $cant_cots = $cont;
  }

  if ($cont % 1000 == 0 and $cont > 1 and $sql_insert!='') {
    $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);
    if ($db->ejecutar_sql()) {
      escribirLog('1000 cots saved');
    }else{
      echo $sqla;
      escribirLog('mysql error al insertar' . $db->getError());
      exit;
    }
    $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';
  }
});




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;
}





finCiclo();




//binanceClose();










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

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



  return $cont;

}