Ajuda com dicas sobre Algoritmos
Olá pessoal, eu estou estudando um pouco sobre algoritmos e criei um sobre uma coisa que me interessou no momento, matando dois em um. Alguém poderia olhar me dar umas dicas de como melhorar e tornar o meu algoritmo mais rápido de ser lido?
Dicas de plataformas mais usadas também é bem vindo.(no momento é oque eu sei, mas estudarei futuramente)
Obrigado por tudo desde já.
<?php
ob_implicit_flush(true); //ativa permição do buffer de saida
$dbCEditor = fopen('./db.txt', 'a'); //carrega banco de dados a ser varrido em uma Array() (se não houver, cria)
$dbC = file('./db.txt'); //carrega banco de dados com permissão para atualização
unset($dbC[0]); //apaga 1ª linha do $dbCEditor (linha vazia, irrelevante)
$nList = count($dbC); //Conta quantas linhas o documento tem para utilização d $dbCEditor
for($x=1; $x <= 1000000; $x++) { //Loop de checagem de documentos
//Checa antecipadamente se é necessário a verificação do documento.
$card = file_get_contents("./arquivo".$x,false,null,0,317);
if(strstr($card, 'textSelector')) {
echo $x." - Registro não existente <br>";
ob_flush();
continue; /*return;*/
}
$card = file("./arquivo".$x); //armazena documento em uma Array()
$cId=0; $cNameBr=0; $cNameEn=0; //Variaveis aonde id,nome em pt-br e nome em en-us ficam armazenados
$check=0; //var. que registra buscas localizadas
for($i = 300; isset($card[$i]); $i++) { //loop do conteudo em busca
//ao chegar no limite de busca, cancela o loop
if(strstr($card[$i], '</table>')) break;
//ao encontrar elemento en-us...
if(strstr($card[$i], 'English')) {
if(!empty($cNameEn)) continue;
$nameStarts = strpos($card[$i-3], '">')+2;
$nameEnds = strpos($card[$i-3], '</a>');
$cNameEn = substr($card[$i-3], $nameStarts, $nameEnds - $nameStarts);
if(++$check==2) break; else continue;
}
//ao encontrar elemento pt-br...
if(strstr($card[$i], 'Portuguese (Brazil)')) {
$idStarts = strpos($card[$i-3], 'eid=')+4;
$idEnds = strpos($card[$i-3], '">');
$nameStarts = $idEnds+2;
$nameEnds = strpos($card[$i-3], '</a>');
$cId = substr($card[$i-3], $idStarts, $idEnds - $idStarts);
$cNameBr = substr($card[$i-3], $nameStarts, $nameEnds - $nameStarts);
if(++$check==2) break; else continue;
}
}
//Se todos os elementos forem encontrados... caso contrário registra que não há nada.
if($check==2) {
$match = false;
$cardFound = $cId ." - ". $cNameBr ." - ". $cNameEn;
//Ferifica se o registro já foi encontrado
for($i = 1; isset($dbC[$i]); $i++) {
if($dbC[$i] === $cardFound) {
$match = true;
echo $x." - deu match -> ".$cNameEn." <br>";
ob_flush();
break;
}
}
if($match==true) continue; //se registro já foi encontrado, salta para proximo loop
//registra caso ainda não foi
$dbC[++$nList] = $cardFound;
echo $cardFound ."<br>";
fwrite($dbCEditor, chr(13).chr(10).$cardFound);
ob_flush();
} else { echo $x." - Nada em Pt-Br <br>"; ob_flush(); }
}
print_r($dbC); //Log final dos registros.
fclose($dbCEditor); //fecha editor de texto.Discussão (2)
Carregando comentários...