mruoppolo 14 Denunciar post Postado Setembro 20, 2016 Olá, tudo bem? Eu preciso pegar os 10 últimos resultados de concursos da loteria para mostrar na minha aplicação o problema é que para pegar os resultados preciso fazer uma consulta cURL nos webservices o que faz com que acabe excedendo o limite de execução de 30 segundos, então eu gostaria de saber como posso fazer para conseguir executar este função, estou usando o seguinte código: //Executo uma consulta para saber qual é o número do último concurso $curl = curl_init("http://wsloterias.azurewebsites.net/api/sorteio/getresultado/3"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $json = curl_exec($curl); curl_close($curl); $num = json_decode($json, true); //Pego o número do último concurso e subtraio 10 para saber a partir de qual número preciso buscar para conseguir mostrar os últimos 10 $concurso = $num['NumeroConcurso']; $atual = $num['NumeroConcurso'] - 10; ?> <div class="col-md-12"> <div class="table-responsive"> <table class="table table-hover table-bordered"> <thead> <th>Concurso</th> <th>Data</th> <th colspan="15">Resultado</th> </thead> <tbody> <?php //Inicio a busca pelos últimos 10 resultados dos últimos 10 concursos for ($i=$atual; $i<=$concurso; $i++) { $curl = curl_init("http://wsloterias.azurewebsites.net/api/sorteio/getresultado/3/".$i); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $json = curl_exec($curl); curl_close($curl); $jsonObj = json_decode($json, true); ?> <tr> <td><?php echo $jsonObj['NumeroConcurso']; ?></td> <td><?php echo date('d/m/Y', strtotime($jsonObj['Data'])); ?></td> <?php $numSorteado = $jsonObj['Sorteios']['0']['Numeros']; for ($i=0; $i<=14; $i++) { switch ($numSorteado[$i]) { case '5': $class = " class='danger'"; break; case '6': $class = " class='danger'"; break; case '7': $class = " class='danger'"; break; case '12': $class = " class='danger'"; break; case '13': $class = " class='danger'"; break; case '14': $class = " class='danger'"; break; case '19': $class = " class='danger'"; break; case '20': $class = " class='danger'"; break; case '21': $class = " class='danger'"; break; default: $class = ""; break; } echo "<td".$class.">".$numSorteado[$i]."</td>"; } ?> </tr> <?php } ?> </tbody> </table> </div> </div> <?php } Como eu posso fazer para isso não demorar tanto tempo? Obrigado :D Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Setembro 20, 2016 Pegue uma vez por dia, e cacheie num banco de dados do seu lado. Se você ficar consultando a cada visitante você terá problemas mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Setembro 20, 2016 Mas ele não funciona nem na primeira pesquisa, pra eu cachear preciso conseguir fazer pelo menos uma, como posso fazer? Obrigado :D Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Setembro 20, 2016 O que ele disse foi para ir fazendo cache gradativamente. Não precisa ser na hora que o usuário acessa. Pode ser através de uma atividade cadastrada via CronTab (tarefas agendadas). A carga inicial, você pode "fazer na mão" mesmo. E quando usuário acessar, ao invés de fazer essa consulta com cURL, utilize uma consulta ao seu banco de dados local. Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Setembro 20, 2016 Humm, acho que entendi mais ou menos Compartilhar este post Link para o post Compartilhar em outros sites