+ Responder ao Tópico



  1. #1
    davi
    Visitante

    Padrão php não trata arquivos grandes

    Pesso-all:
    Temos um programa PHP que le um arquivo .csv, um arquivo texto com dados separados por separadores, tipo ponto-e-vírgula, o o objetivo final é que esses arquivos venham a alimentar bases de dados MySQL.
    Para efeito de teste, começamos ecoando os dados dos arquivos CSV na tela. Até um certo tamanho de arquivo o PHP faz, dá mais ou menos 7500 linhas. Mais do que isso dá erro, diz que "a página não pode ser exibida", ou o loop não acaba nunca, trava a máquina, ou diz que "such file contains no data", em cada situação, e em cada browser, o comportamento e diferente.
    Alguém sabe se existe alguma variável de limitação de loop ou de exibição de resultados, qualquer coisa que possa limitar desta forma rústica a operacionalidade do PHP? :cry:

  2. #2

    Padrão php não trata arquivos grandes

    max_execution_time = 60 ; Maximum execution time of each script, in seconds
    max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
    memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)

    de uma olhada nestas variaves em seu php.ini, aumente elas se precisar...

    vc faz upload ou coisa do tipo? envia dados por formulario?

  3. #3

    Padrão php não trata arquivos grandes

    ; Maximum size of POST data that PHP will accept.
    post_max_size = 20M

    ; Maximum allowed size for uploaded files.
    upload_max_filesize = 20M

    aqui tenho um controle de documentos rodando em PHP e por isso aumentei o limite maximo de upload e post.... claro, quase nunca ele usa esse limite....mas quando e ultrapassado, a pagina nem abre..."document contain no data" ...não sei se este é seu caso...

  4. #4

    Padrão php não trata arquivos grandes

    tente rodar o php na linha de comando pode funcionar melhor, e tambem eleve o nivel de error reporting do php, assim da para ter mais nocao do que ta acontecendo.

  5. #5
    davi
    Visitante

    Padrão Resposta

    Beleza
    Vou tentar depois digo o que funcionou

  6. #6

    Padrão php não trata arquivos grandes

    na verdade nao existe limitacao de loop, e sim de memoria....ou seja....dependo do q vc ta tentando fazer, pode ser q ele esteja ocupando mais memoria do q vc precise....o ideal, eh q vc trate linha por linha.....assim oh:

    Código :
    $fp=fopen("arquivo.csv","r") or die("Falha ao abrir arquivo");
    fseek($fp,0);
    while(!feof($fp)){
           $linha=fgets($fp);
           /*
            * Trata a linha e insere no banco
            * ou cria um arquivo .sql para inserir depois
            */
    }

    assim vc vai ler linha por linha e ir tratando ela.....ao inves de ler tudo e ir tratando depois.....apesar de q nao sei como vc ta fazendo, seria bom vc falar como esta fazendo.....
    :wink: