Jump to content

Question

Olá bom dia! 

 

Me chamo Diego, estou entrando no mundo da programação não tenho muita experiência, mais preciso de uma dica do pessoal mais experiente para conseguir pegar um tipo de situação. 

Tenho um sistema que integra via API com protocolo RestFULL e queria saber quando faço uma requisição e ela atingi o "tempo limite de operação excedido (Time Out)".  

Como faço para pegar esse tipo de situação, eu queria gravar em um log no banco de dados, quando o tempo se esgota e não tenho retorno da requisição feita. 

E também se possível quando elas são bem sucedidas e o tempo que demorou para ter um retorno. 

*** não sei capturar esse tipo de informação acima descrito!

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Do lado da API RestFULL, você deve olhar o log do servidor. Caso o timeout foi gerado por uma operação muito demorada, o servidor mesmo que criará o erro/exception e fará o log.

 

Entretanto, se o timeout ocorreu por falta de conectividade (quando a aplicação não consegue se comunicar com o servidor), o timeout deve ser logado pela própria aplicação que está realizando a chamada.

 

Para a parte de aplicação, depende um pouco da linguagem de programação que está usando. Entretanto, em sua maioria, pode-se utilizar um bloco try/catch para capturar o erro e tratar/logar ele.

  • +1 1

Share this post


Link to post
Share on other sites
  • 0

Obrigado pelas informações vou ver como consigo pegar os logs do servidor, já tenho os logs gravados por falha de api no try / catch , ele grava certinho por estouro de campo, entre outras premissas na regra de negocio, cara eventualidade encontrada na api ele grava um erro certinho, no caso mesmo é quando atingi aqueles 30 segundos padrão do time out. 

Ai você diz que na propria hospedagem (servidor) ele gera um log automático para isso vou ver como faço para pegar esse log e vi também um método meio gambi mais acho que seria uma boa 30 segundos e tempo suficiente para retornar uma requisição geralmente não passa de 2 a 5 segundos para consumo dessa API , pois bem, vi um cara fazer uma regra com variável para medir o tempo em que ele pega 80% dos 30 segundos em espera e 20% ele joga no try/catch, tipo ele espera 24s para consumo se ultrapassar tem 6s para gravar um erro antes de estourar os 30s.  

Vou ver como implemento esse esquema pois tenho que identificar a resposta da requisição pegando na body né o padrão 200 ou 201 dos http (request) creio que seria isso se receber algo fora disso ou nada em 24 segundos ja trato ele no catch e gravo um log que aquela requisição foi falha. Acho que seria isso. 

Me corrigi se tiver errado por favor.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Agnosticado
      Olá senhores, estou intrigado com uma coisa: tenho o seguinte código:
      $id_exame = "50296"; $pesquisa = "SELECT motivo, CASE WHEN motivo = 'Intensa superposição celular em mais de 75% de esfregaço' THEN 'A' WHEN motivo = 'Sangue em mais de 75% de esfregaço' THEN 'B' WHEN motivo = 'Artefatos de dessecamento mais de 75% de esfregaço' THEN 'C' ELSE 'TESTE' END AS opcao FROM insatisfatorio WHERE exame_id = '$id_exame' ORDER BY opcao ASC"; $linha = mysql_query($pesquisa); while ($pesquisa = mysql_fetch_array($linha) or die(mysql_error())){ echo $pesquisa["opcao"]; } Quando executo usando
       
      $linha = mysql_query($pesquisa);
                 while ($pesquisa = mysql_fetch_array($linha) or die(mysql_error())){
              echo $pesquisa["opcao"];
              echo "<br>";
       
       
      a saída é palavra "TESTE" que o default e não o texto "B" que corresponde a string da chamada do $id_exame = 50296.
       
      O ESQUISITO é que quando executo todo select que está na variável $pesquisa direto no SGBD dá certo e o texto "B" aparece normalmente.
      PQ DIABOS ISSO ACONTECE???
    • By diogoglobaltec
      Estou completamente perdido na integração do mercado pago, estou estudando PHP e mysql,  e já estou com o site quase completamente terminado, mas estou
      sem saber o que fazer para conseguir integrar a API de pagamento do mercadopago no site,
       
      algumas dúvidas que tenho:
       
      consigo usar o sandbox ou o modo de produção no localhost ?
       
      li a documentação , mas isso ficou um pouco nebuloso...
       
      usei o código posto no developers do site 
       
       
      <?php require_once 'vendor/autoload.php'; MercadoPago\SDK::setAccessToken("meu token coloquei aqui"); $payment = new MercadoPago\Payment(); $payment->transaction_amount = 141; $payment->token = "YOUR_CARD_TOKEN"; $payment->description = "Ergonomic Silk Shirt"; $payment->installments = 1; $payment->payment_method_id = "visa"; $payment->payer = array( "email" => "larue.nienow@hotmail.com" ); $payment->save(); echo $payment->status; ?>  
      o retorno foi o seguinte erro:
       

      Fatal error: Uncaught TypeError: Return value of Doctrine\Common\Annotations\AnnotationRegistry::registerFile() must be an instance of Doctrine\Common\Annotations\void, none returned in /home/nix/PHP/novosite/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php:67 Stack trace: #0 /home/nix/PHP/novosite/vendor/mercadopago/dx-php/src/MercadoPago/MetaDataReader.php(27): Doctrine\Common\Annotations\AnnotationRegistry::registerFile('/home/nix/PHP/n...') #1 /home/nix/PHP/novosite/vendor/mercadopago/dx-php/src/MercadoPago/Manager.php(42): MercadoPago\MetaDataReader->__construct() #2 /home/nix/PHP/novosite/vendor/mercadopago/dx-php/src/MercadoPago/SDK.php(34): MercadoPago\Manager->__construct(Object(MercadoPago\RestClient), Object(MercadoPago\Config)) #3 /home/nix/PHP/novosite/vendor/mercadopago/dx-php/src/MercadoPago/SDK.php(72): MercadoPago\SDK::initialize() #4 /home/nix/PHP/novosite/pagamento.php(5): MercadoPago\SDK::setClientId('387858205014127...') #5 {main} thrown in/home/nix/PHP/novosite/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php on line 67
       
       
       
      acho que não deveria ser isso alguém disposto a me orientar nisso ? 
       
       
       
       
       
       
       
       
    • By Alandeoli
      Boa noite Pessoal!
       
       
      Estou criando uma tela de login, e passando os dados para uma pagina que vai se conectar ao AD, mas mesmo eu colocando os campos em branco a conexão esta passando como ok, segue os códigos se puderem me ajudar agradeço muito!
       
      Tela conexao:
       
      <?php   $adServer = "ldap://xxx.xxxx.xx.xx";   $ldap = ldap_connect($adServer); $username = $_POST['user']; $password = $_POST['pass'];   $ldaprdn = 'XXX' . "\\" . $username;   ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);   $bind = @ldap_bind($ldap, $ldaprdn, $password);   if($bind=true)   {   echo "conexão ok";     } else   {   echo "erro";     }   Tela Login:   <!DOCTYPE html> <html lang="pt-br"> <link href='css/login.css' rel='stylesheet' />


        <head> <meta charset="UTF-8"> <title>Tela de Login e Senha</title> </head>   <body> <div name="login" id="login"> <div name="box" id="box"> <form method="POST" action="ad.php" name="form"> Login : <input type="text" name="user" id="user"><br><br> Senha : <input type="password" name="pass" id="pass"><br><br> <input type="submit" value="Login" id="button"> </form> </div> </div>   </body>   </html>                                
    • By dutopfave
      Boa Tarde Galera, tenho um sistema de etiqueta que nele vai também código de barras, quando eu mostro na tela, funciona perfeitamente, mais quando gero pra pdf, com a biblioteca mPDF, da erro,  e é justo o código de barras q da esse erro, oq pode ser sera, segue o código de como ta:
       
      <?php require '../../Connections/config.php'; include "../Classes/funcoes.php"; include "cod.php"; $largura = 140; $altura = 130; include("mpdf60/mpdf.php"); // INICIO RECUPERA O ID DA ETIQUETA IMPORTADA $Row_Id_Etiqueta = addslashes($_GET['id_etiqueta']); $Recuperacao_Etiqueta = $pdo->prepare("SELECT * FROM tb_sys_etiqueta WHERE e_id = :e_id"); $Recuperacao_Etiqueta->bindValue(":e_id", $Row_Id_Etiqueta); $Recuperacao_Etiqueta->execute(); if($Recuperacao_Etiqueta->rowCount() > 0){ $Row_Recuperacao_Etiqueta = $Recuperacao_Etiqueta->fetch(); } // FIM RECUPERA O ID DA ETIQUETA IMPORTADA $id_etiqueta = $_GET['id_etiqueta']; $Lista_Etiqueta = "SELECT * FROM tb_sys_etiqueta WHERE e_id = '$id_etiqueta'"; $Lista_Etiqueta = $pdo->query($Lista_Etiqueta); if($Lista_Etiqueta->rowCount() > 0){ $etiqueta_id = $Lista_Etiqueta->fetch(); $qtd = $etiqueta_id['e_volume'] + 1; $qtd2 = $etiqueta_id['e_volume']; for ($i>0; $i<$qtd; $i++) { if($i>$etiqueta_id['e_pagina']){ // verificar se a pagina é menor que 10 if($i<10){ $n = '0'; }else{ $n = ''; } // verificar se a quantidade é menor que 10 if($etiqueta_id['e_volume']<10){ $nq = '0'; }else{ $nq = ''; } $html .= '<div class="etiqueta"> <div class="etiqueta-topo"> <img src="../images/logo.fw.png" width="116" height="52"> </div> <div class="etiqueta-empresa"> <div class="etiqueta-empresa-left"> <h1>GYN</h1> </div> <div class="etiqueta-empresa-right"> <h1>VOL: '.$n.''.$i.'/'.$nq.''.$qtd2.'</h1> </div> </div> <div class="etiqueta-endereco"> <div class="etiqueta-endereco-left"> <span><b>Remetente:</b></span><br/> <span>'.$etiqueta_id['e_remetente'].'</span><br/><br/> <span><b>Destinatário:</b></span><br/> <span>'.$etiqueta_id['e_destinatario'].'</span> </div> <div class="etiqueta-endereco-right"> '.geraCodigoBarra('232323232323').' <br /> '.$etiqueta_id['e_codigo_barras'].' <p>Goiânia/GO</p> </div> </div> </div>'; } } } $mpdf = new mPDF('utf-8', array($largura,$altura)); $css = file_get_contents("css/estilo.css"); $mpdf->WriteHTML($css,1); $mpdf->WriteHTML($html); $mpdf->Output(); exit;  
      a função pra gera o código de barras: cod.php
       
      <?php function geraCodigoBarra($numero){ $fino = 1; $largo = 3; $altura = 50; $barcodes[0] = '00110'; $barcodes[1] = '10001'; $barcodes[2] = '01001'; $barcodes[3] = '11000'; $barcodes[4] = '00101'; $barcodes[5] = '10100'; $barcodes[6] = '01100'; $barcodes[7] = '00011'; $barcodes[8] = '10010'; $barcodes[9] = '01010'; for($f1 = 9; $f1 >= 0; $f1--){ for($f2 = 9; $f2 >= 0; $f2--){ $f = ($f1*10)+$f2; $texto = ''; for($i = 1; $i < 6; $i++){ $texto .= substr($barcodes[$f1], ($i-1), 1).substr($barcodes[$f2] ,($i-1), 1); } $barcodes[$f] = $texto; } } echo '<img src="../images/p.gif" width="'.$fino.'" height="'.$altura.'" border="0" />'; echo '<img src="../images/b.gif" width="'.$fino.'" height="'.$altura.'" border="0" />'; echo '<img src="../images/p.gif" width="'.$fino.'" height="'.$altura.'" border="0" />'; echo '<img src="../images/b.gif" width="'.$fino.'" height="'.$altura.'" border="0" />'; echo '<img '; $texto = $numero; if((strlen($texto) % 2) <> 0){ $texto = '0'.$texto; } while(strlen($texto) > 0){ $i = round(substr($texto, 0, 2)); $texto = substr($texto, strlen($texto)-(strlen($texto)-2), (strlen($texto)-2)); if(isset($barcodes[$i])){ $f = $barcodes[$i]; } for($i = 1; $i < 11; $i+=2){ if(substr($f, ($i-1), 1) == '0'){ $f1 = $fino ; }else{ $f1 = $largo ; } echo 'src="../images/p.gif" width="'.$f1.'" height="'.$altura.'" border="0">'; echo '<img '; if(substr($f, $i, 1) == '0'){ $f2 = $fino ; }else{ $f2 = $largo ; } echo 'src="../images/b.gif" width="'.$f2.'" height="'.$altura.'" border="0">'; echo '<img '; } } echo 'src="../images/p.gif" width="'.$largo.'" height="'.$altura.'" border="0" />'; echo '<img src="../images/b.gif" width="'.$fino.'" height="'.$altura.'" border="0" />'; echo '<img src="../images/p.gif" width="1" height="'.$altura.'" border="0" />'; } ?>  
    • By Cesar Melo
      Olá. Gostaria de uma opinião sobre onde focar meus estudos para trabalhar com PHP.
      Atualmente tenho conhecimentos com a linguagem PHP, e os seguintes frameworks: Bootstrap e Jquery.
      Recentemente fiz um curso de Laravel+materialize e gostei muito desse framework. Meu primeiro contato com framework para backend e pretendo utilizar o Laravel daqui pra frente nos meus estudos.
       
      Minha questão é a seguinte, quero dar continuidade aos meus estudos para me qualificar para o mercado de trabalho, mas não sei exatamente os próximos cursos que vou estudar.
      Não sei se atualmente há uma combinação de frameworks mais utilizada ou requisitada no mercado de trabalho. Ex: Laravel+vue+bootstrap, ou laravel+angularjs+materialize, tipo isso.
       
      Dei uma pesquisada no google e youtube, e notei que não há muito conteúdo de cursos por exemplo de Laravel+angularjs.
      Procurando algumas vagas de emprego, notei que há grande procurar para profissionais com qualificação em Laravel, e tambem grande procura para profissionais com qualificação em AngularJs, porém vagas distintas. Acho que não vi nenhuma vaga que peça Laravel+AngularJs.
       
      Alguém aí pode me passar uma visão ou dar sua opinião sobre isso, para eu focar meus estudos? Alguém sabe o que andam usando bastante? Ou que seja indicado de trabalhar em conjunto com PHP?
       
      Ah, uma observação... atualmente meu foco são de projetos voltados para sistemas, admin, etc. Não tenho muito perfil para projetos de marketing ou que exijam um frontend "lindo". rsrs.
       
      Grato...
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.