Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mruoppolo

Pegar resultados de diversos concursos da loteria

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.