+ Responder ao Tópico



  1. #1
    whinston
    Visitante

    Padrão Performance MySQL+ Apache

    Olá povo, não costumo postar dúvidas de programação pq não sou programador, apenas faço uns scripts pra quebrar galhos. A questão é a seguinte:
    Estou logando as saídas originalmente em arquivos para o MySQL, no caso, os emails, snort, acessos, etc.. E isto está gerando cerca de 10mil registros/ dia! Muita coisa!
    Quando eu faço um SQL para filtrar estes logs via phpmyadmin ou via algum software de frontend, o tempo de resposta é rápido, cerca de 1seg. Considerando o banco com 1 milhão de registro e cresce 10mil por dia, considerado bem razoável.
    A questão é a seguinte: quando faço um PHP para extrair os dados, a pesquisa via lentíssima!!! Tive que alterar no php.ini para um timeout de 30segundos e mesmo assim, não tá dando, as vezes tá, ou seja, tá horrível!
    A máquina é um PIv (novo) Ht 3Ghz, com discos SCSI. Apache e PHP novos, atualiazinhos. Alguém sabe oq pode ser ? Abs.

  2. #2

    Padrão Performance MySQL+ Apache

    eae cara....seria uma boa vc posta qual o script q vc ta usando....pq tem umas funcao em php q carrega todos os registros pra memoria...e se vc nao tomar cuidado isso te f** pq 1mi de registros na memoria num eh mto agradavel....

    mas entao....posta ae o seu script (sem usuario e senha claro :wink: ) q nois ti ajuda...




    PS: vi seu off-topic...por isso chegei aki... :lol:

  3. #3
    whinston
    Visitante

    Padrão programa de teste

    <?
    include "base.php"; // arquivo de base (biblioteca)
    html_abrir(); // forma o html
    bd_email(); // conecta no banco

    $sql = "select usuario from acesso where usuario = xxx";
    $resultado = mysql_query ($sql);
    if (!$resultado) {
    echo " foooooooooooodeu !\n\n";
    echo $sql;
    exit;
    }

    echo "ola";

    html_fechar();

    bom, eh simplérrimo! na verdd ele nem ta exibindo saída, justamente pq demora. soh este SQL ae fica mais de 2min. e o OLA não aparece. enqto isto, via top, o httpd fica em 100%

  4. #4

    Padrão Re: programa de teste

    Citação Postado originalmente por whinston
    $sql = "select usuario from acesso where usuario = xxx";
    bao cara....era uma bota tu colocar um LIMIT nesse teu SQL (o phpMyAdmin faz isso) ai ficaria mais ou menos assim:


    Código :
    $sql = "select usuario from acesso where usuario = xxx LIMIT 100,OFFSET";

    soh q offset vc troca pelo registro q vc quer primero...tipo...

    1 asdfasdsfasdf
    2 dfadfasfsdfasdfasd
    3 adsfadsfadsfasdfadsf
    4 asdfasdfadsfasdfdsf

    se vc colocar offset 2 ele vai ti trazer do resultado 3 em diante (offset eh como se fosse "pule x registros")

  5. #5
    whinston
    Visitante

    Padrão mais ou menos

    ah beleza, saquei.
    mas vem k.. ele nao ta exibindo isto na tela (ainda)

    ele só vai fz 1 SQL e dar 1 count pra ver qtos sites o peao acesso, ae num da pra dar o limit ne ?

    c usa o mysqlfront ? nele, eh sem limit e tb vai rapidao
    tem alguma coisa no php.ini pra agilizar isto ?

    qto ao outro topico, a idade vai chegando, eu nem lembrei que ja tinha postado, ehehehe. apaga o outro por favor.

  6. #6

    Padrão Performance MySQL+ Apache

    hehehe....eu nem uso mysql....mas dei uma solucao com base no codigo q vc passo.....

    e o codigo q vc passo nao imprime nenhum registro msm