Ir para conteúdo
Fórum Script Brasil
  • 0

Divisão de loop


Carlos Rocha

Pergunta

Pessoal, preciso de uma orientação.

Estou abrindo um arquivo que possui n linhas.

Cada linha possui uma estrutura assim:

dado_a|dado_b|dado_c|dado_d|dado_e

Todos separados por | n linhas assim.

Esse arquivo tem mais de 7000 linhas onde o php precisa verificar linha por linha e comparar se há um combinação de cada linha com uma tabela na base.

Acontece que essa verificação esta sendo feita ok. Porem quando verificada, é preciso fazer um update no banco a partir dos dados lidos no arquivo. Até 3000 e poucas linhas, o update vai bem. Depois trava a pagina.

Gostaria de arranjar uma forma de dividir essa tarefa em um numero que permitisse que o processo não parasse por excesso tempo.

Alguma orientação?

Eis o código atual.

$diretorio = "estoque/";
//Fizemos todos os testes e esta tudo certo.
$arq = fopen($diretorio.$nome,'r'); // abre arquivo
//LÊ O ARQUIVO ATÉ CHEGAR AO FIM
while($linha = fgets($arq))  // Lê linha por linha
{  
$linha_cada = explode('|', $linha);

$busca_string= "
select
estoque.id_estoque,
estoque.id_produto,
estoque.id_cor,
estoque.id_tamanho,
produtos.referencia_produtos  
from estoque
inner join produtos on estoque.id_produto = produtos.id_produtos
inner join tamanhos on estoque.id_tamanho = tamanhos.id_tamanhos
inner join cores on estoque.id_cor = cores.id_cores
where
  produtos.referencia_produtos='$linha_cada[0]' and
  cores.nome_cores='$linha_cada[1]' and
  tamanhos.nome_tamanhos='".$linha_cada[2]."'";

$busca_query= $conexao->query($busca_string);

if ($busca_query->num_rows>0)
{
list($id_estoque, $id_produto, $id_cor, $id_tamanho, $referencia_produtos)=$busca_query->fetch_row();
$atualisa_estoque_string =
"update estoque set estoque=".$linha_cada[3]." where id_estoque=".$id_estoque;
$atualisa_estoque_query = $conexao->query($atualisa_estoque_string);
if ($contador%100==0)
{
$conexao->close;
$conexao->init;
}
}
} //FIM DO WHILE
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...