Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    come fare log delle query?

    Ciao a tutti.
    Il mio problema è questo: vorrei creare in una tabella una sorta di log delle operazioni effettuate sul db dagli utenti.
    In pratica vorrei memorizzare in un campo l'id dell'utente che ha effettuato la query e in un altro campo la stringa contenente la query stessa.
    Ho spulciato sia il manuale di mysql che quello di php.
    L'unica cosa che ho trovato è la funzione mysql_info() ma non fa al caso mio.
    Qualcuno si è mai imbattuto in questa situazione?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    up

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

  4. #4
    potresti creare una funzione dal nome "mysql_query_log()" da utilizzare al posto di mysql_query. In questa funzione metti il codice per effettuare il log delle operazioni e poi lanci realmente la query.


  5. #5
    avevo fatto per un progetto, una classe mysql, che gestiva log e li salvava su file di testo, se vuoi posso passartela, contattami tramite msn, ciao
    debian:~$ uname -r
    2.6.18-1-686
    debian:~$

    Il quiz manager è nato!!! visitate http://shenk.altervista.org !!

  6. #6
    quando utilizzo mysql_info()
    mi ritorna undefined function

    $query= "insert into i1_sis (Rif_id,Nome,Nome2)
    values ('$cap1','$localita1','$prov1')";

    mysql_query ($query) or die (mysql_error());

    $info = (mysql_info());
    echo $info;



    a meno che voi non conosciate un'altra funzione che mi permette di capire quanto tempo ci impiega la query a fare l'insert sul DB...

  7. #7

    Traccia i tempi...

    Quanto tempo ci mette la tua query?
    Ma fai allora un time tracking con la funzione microtime()!

    Codice PHP:
    $microtime_1 explode(" "microtime());
    $microtime_1 = ((float)$microtime_1[0] + (float)$microtime_1[1]);

    // connessione al database;
    // selezione del database;
    // esecuzione della query;
    // estrazione dei risultati con eventuali cicli while, for o foreach...
    // tutto quello che ti pare e di cui voi misurare il tempo di esecuzione...

    $microtime_2 explode(" "microtime());
    $microtime_2 = ((float)$microtime_2[0] + (float)$microtime_2[1]);

    echo 
    "La query è stata eseguita in ".round(((float)($microtime_2-$microtime_1)), 4)." secondi.
    \n"

    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  8. #8

    Doppia query

    Comunque per rispondere al tuo primo quesito, io risolverei semplicemente creando una tabella aggiuntiva nel database per memorizzare il log degli eventi.
    Supponendo che la tabella si chiami log:
    Codice PHP:
    // Connessione al database:
    $db mysql_connect($db_host$db_user$db_password);
    if (!(
    $db)) die ("Errore nella connessione. Verificare i parametri nel file bla bla bla...");
    mysql_select_db($db_name$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri bla bla bla...");

    $query "INSERT INTO counter (page_id, time) VALUES ('$page_id', '$time',)";
    if (!(
    mysql_query($query$db))) { echo "Errore nella query utente..."; }
    else { 
    $log_query "INSERT INTO log (user_id, query_string) VALUES ('$user_id', '$query')";
    if (!(
    mysql_query($log_query$db))) { echo "Errore nella query di log..."; }
    } else { echo 
    "Query eseguita correttamente..."; } 
    Se la prima query (quella eseguita dall'utente) va a buon fine, viene lanciata anche la query di log, che salva i dati che ti interessano nel database.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    ciao emanueledg. Grazie per la risposta ma avevo risolto da un sacco di tempo.
    Il thread risale ad ottobre dello scorso anno. Non capisco perchè sia stato riesumato anche perchè la domanda fatta non mi sembra fosse molto pertinente con il mio problema.
    Comunque ti ringrazio ancora per l'interessamento.

  10. #10

    Re: Traccia i tempi...

    Originariamente inviato da emanueledg
    Quanto tempo ci mette la tua query?
    Ma fai allora un time tracking con la funzione microtime()!

    Codice PHP:
    $microtime_1 explode(" "microtime());
    $microtime_1 = ((float)$microtime_1[0] + (float)$microtime_1[1]);

    // connessione al database;
    // selezione del database;
    // esecuzione della query;
    // estrazione dei risultati con eventuali cicli while, for o foreach...
    // tutto quello che ti pare e di cui voi misurare il tempo di esecuzione...

    $microtime_2 explode(" "microtime());
    $microtime_2 = ((float)$microtime_2[0] + (float)$microtime_2[1]);

    echo 
    "La query è stata eseguita in ".round(((float)($microtime_2-$microtime_1)), 4)." secondi.
    \n"

    ciao ... grazie molte per la soluzione..
    la query che devo controlloare è un insert... l'unica cosa che nn capisco, è come mai per ogni insert mi stampa l'echo...
    come è possibile visualizzare il totale dei secondi ma di tutti gli insert record..non di ogni insert record...???
    ciao e grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.