Ir para conteúdo

Arquivado

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

Nielsen Tomazini

Script pesado, como deixá-lo mais leve?

Recommended Posts

Olá, Estou rodando um script que busca por todas as páginas php e captura algumas meta tags, todo o conteúdo dos <h1><h2> e <h3>, e escreve estas informações numa linha, junto com o nome do arquivo e o diretório.Uma vez com as informações gravo um arquivo .txt com todas as informações.Só tem um probleminha, o site em mais de 14.000 páginas o que acontece é que não há memória suficiente no servidor para gravar tudo isto.O mesmo script eu uso para gravar as mesmas informações num BD(MySQL) mas o servidor não aguenta. A assistencia técnica da hospedagem foi até legal comigo em aumentar de 64 para 128 Mb de memória, mas mesmo assim, ainda não é suficiente.Portanto, gostaria de saber se há alguma maneira de fazer o script rodar mais leve, sei lá, algo como descarregar o array que garda as informações depois de um certo número de páginas e aí voltar a rodar (?) realmente não faço noção de que tipo de recursos eu poderia usar, se alguém puder dar uma direção para que eu comece a caminhar, eu agradeço muito.Segue abaixo o script que estou rodando:Valeu!!<?phpfunction get_dirlist($start_dir) { exec("ls -R $start_dir",$f_list); $dir_str = $start_dir; $filelist[0] = $start_dir; $i = 1; for ($count=0; $count<count($f_list); $count++) { if ($f_list[$count] == "") { continue; } if (substr($f_list[$count],strlen($f_list[$count])-1,1) == ":") { $dir_str = substr($f_list[$count],0,strlen($f_list[$count])-1); $filelist[$i] = $dir_str; $i++; } else { $file_str = "$dir_str/$f_list[$count]"; if (is_file($file_str)) { $filelist[$i] = $file_str; $i++; } } } return $filelist; }//local de onde o script vai rodar $start_dir ="/htdocs/alfa/"; $filelist = get_dirlist($start_dir); $lista = array();for ($c=0; $c<count($filelist); $c++) { $diretorio = $filelist[$c]; $arquivo = basename($diretorio); //o nome do arquivo atual - não precisa mais... $tags = get_meta_tags($diretorio); // extrai as meta tags do arquivo atual //pega o final de cada arquivo e vê se é .php $extensao = substr($arquivo, -3); $pattern = "#<(h1|h2|h3)>(.*)(</(h1|h2|h3)>)#iU"; $string = file_get_contents("$diretorio"); if ($extensao == "php") { $numero = $numero; preg_match_all($pattern, $string, $out, PREG_SET_ORDER); $titulo = $tags['title']; $descricao = $tags['description']; $palavras = $tags['keywords']; $subs = array(); for ($i=0; $i<count($out); $i++){ $lista[$i] = $out[$i][0]; } $resultado = implode(",", $lista); $resultado = strip_tags($resultado); $resultado = html_entity_decode(preg_replace("@(<.*?>)@", "", $resultado)); //PREPARA O CONTEÚDO A SER GRAVADO $conteudo = "$numero | $diretorio | $arquivo | $titulo | $descricao | $palavras | $resultado \n"; //ARQUIVO TXT $texto = "teste.txt"; //TENTA ABRIR O ARQUIVO TXT if (!$abrir = fopen($texto, "a")) { echo "Erro abrindo arquivo ($texto)"; exit; } //ESCREVE NO ARQUIVO TXT if (!fwrite($abrir, $conteudo)) { print "Erro escrevendo no arquivo ($texto)"; exit; } //FECHA O ARQUIVO fclose($abrir); $numero = $numero + 1; }}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ta criar um bd com informaçoes de paginas?bem... se você ta tentando fazer igual o google... elel nao armazena assim nao viu!!!ele vaz uma referencia dos sites que localiza, mas antes disso suas spiders ja fizeram isso que você ta querendo sem usar o comando do navegador, ou seja ... e independente...usando o comando do usuario, automaticamente você vai usar a memoria do server m questao, o que vai fazer ficar lento mesm.... armazene a referencia de forma binaria das buscas (q ai você ja economiza memoria), e evie a um banco de dados . dai você tem q ter um sistema esperando a atualizaçao desse banco, que quando percebe ou e avisado da atualizaçao de tal db ele executa o comando de ir na pagina que você mandou a referencia e sim faz a revirada!!! ou seja, nao e um trabalho... sao variosrs mas e por ai!! nda facil... do jeito q você ta fazendo. vai ser lento mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

hahaah olha o que o outro responde .. é mlhor ficar quieto, não explicou nada, falou besteira e deixou o cara confuso .. e respondendo ao usuário .. pq você nao usa o WS que o google disponibiliza pra fazer essa busca? seria tão mais eficiente .. buscar por meta tag não existe ..

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.