Ir para conteúdo

Arquivado

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

ignoredxyz

Melhorar Desempenho (CURL)

Recommended Posts

Dê uma olhada em: https://github.com/petewarden/ParallelCurl

 

Ou

 

veja se melhorou em alguma coisa o teste abaixo:

 


<?php
	function file_get_contents_curl($urls) {
		foreach($urls as $url){
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, $url);
			curl_setopt($ch, CURLOPT_HEADER, 0);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($ch, CURLOPT_FOLLOWLOCATION , 1);
			curl_setopt($ch, CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
			curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); // ISSO DIMINUI A ESPERA EM 30%
			$data = curl_exec($ch);
		
			$pagina = '';
			$erro   = '';
			$req    = null;
			
			if($data === false)
				$erro   .= curl_errno();
			else
				$pagina .= $data;
			
			$req[] = array ('pagina' => $pagina , 'erro' => $erro);
			curl_close($ch);
		}		
		return $req;
	}
	
	$urls = array(
				'google.com.br' ,
				'yahoo.com.br' ,
				'terra.com.br' ,
				'submarino.com.br' ,
				'uol.com.br' ,
				'bol.uol.com.br',
				'mercadolivvre.com.br',
				'riodejaneiro.olx.com.br/nf/all-results/',
				'voegol.com.br',
				'tam.com.br'
				);
	
	// TEMPO DE EXECUCAO
	$time_start = microtime(true);
	
	$conts = file_get_contents_curl($urls);
	
	$time_end = microtime(true);
	
	$time = $time_end - $time_start;
	
    echo "Tempo do processo: {$time}";
	
	print_r($conts);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código não deu certo. Considerando com a função que eu postei, fiz 5 testes com um array de url de tamanho 10 e obtive os seguinte tempos:

19.8
21.2
24.2
19.8
20.4

Média: 21,08

A nova função que foi postada obtive o seguinte:
21.4
20.2
22.5
21.4
21.2

Média: 21,34

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que impera aqui é o tempo de conexão com os links.

 

Se a resposta da página alvo demorar, não há mágica..

Mas há soluções alternativas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procurei saber, encontrei algo como sobre a biblioteca Dom do próprio PHP. (DOMDocument).

Fiz alguns testes, e o retorno dele é extremamente mais rápido, porém ele retonar tudo em DOM mesmo, como se fosse JavaScript.

Tendo que usar métodos do objeto dom, para comseguir o conteúdo de uma div por exemplo.

 

Alguém sabe o método mais simples utilizando essa biblioteca?

Apesar de ter conhecimento em JavaScript DOM, não tenho certeza se a lógica é a mesma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O máximo que ocorreu foi que a sua máquina fez cache ou algum(s) servidor(es) melhorou(aram) o tempo de resposta. Usar DOM é para análise, não para criar requisições HTTP.

 

wat-gigantic-duck.jpg

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.