Visualizzazione dei risultati da 1 a 7 su 7

Discussione: trace degli errori

  1. #1

    trace degli errori

    Ciao Ragazzi,

    volevo sottoporvi questo quesito sperando che ci sia qualcuno in grado ( e ne sono sicuro eheh) che mi possa consigliare.

    sto finendo di realizzare un'applicazione gestionale e mi sono schiantato contro un problema. con l'ottimistica previsione che il DB della suddetta applicazione cresca anche di molto non sono riuscito a venire a capo e a trovare qualcosa che possa tenere traccia di un errore.

    faccio un esempio. l'execution time che ho definito nel php.ini è di 2 minuti max, questo per evitare di intasare troppo il server con query troppo lunghe. Però nel caso questo avvenisse devo trovare il modo alla comparsa del fatidico messaggio "fatal error: bla.. bla.. execution time 120 .." di eseguire un frammento di codice che mi registri, data ora utente transazione e query che ha generato questo errore e me la salvi nel db in una data tabella.

    avevo trovato qualche articolo molto interessante sulle eccezioni nel php5 ma oltre a essermi acculturato su questi strumenti non sono riuscito a cavarne nulla.

    qualcuno mi potrebbe dare una mano su come poter fare?

    Grazie,

  2. #2
    UP

  3. #3
    nessuno mi sa aiutare su questo?

  4. #4
    Ti rispondo per quello che mi viene in mente sul momento, probabilmente esiste una soluzione piu' elegante
    Cmq:
    - prima dell'esecuzione della query, salvi tutte le informazioni che ti servono su db o logfile. Tieni traccia dell'id del record inserito.
    - al termine dell'esecuzione, cancelli il record (o lo checki come 'riuscito')
    - se lo script si blocca, il record non viene cancellato e ne trovi traccia nel db.

  5. #5
    ciao el pedro,

    ci avevo pensato anche io, e infatti quasi tutti gli script vengono loggati in una tabella "job_log" e in questo modo ho la trace di tutti gli script che vengono eseguiti e il loro microtime di esecuzione.

    se però uno script mi va male,ho il risultato che l'esecuzione del codice viene interrotta (logicamente nel db mi rimane lo script in waiting), ma non riesco a tracciare il momento in cui mi si interrompe.

    quello che vorrei riuscire a fare è al presentarsi di un errore che mi blocca l'esecuzione del codice, inserire nel db il fatto che lo script è andato male, l'ora e l'utente più varie informazioni e bloccare quindi l'esecuzione degli script collegati o almeno inviare una segnalazione facendo comunque continuare il funzionamento di quella pagina che poi andrà a caricarsi altri script dal db.

    Non so se mi sono spiegato.

    Ti ringrazio comunque tanto El Pedro

    Ciao,

  6. #6
    Puoi provare a usare la funzione register_shutdown_function allora

    http://de3.php.net/manual/en/functio...n-function.php

    In questo commento si parla proprio del fatto che la funzione registrata viene chiamata anche in caso di max_execution_time exceeded

    http://de3.php.net/manual/en/functio...tion.php#33575

    Ti lascio intendere cosa potresti fare

    Codice PHP:
    <?
    function myShutdown()
    {
      echo 
    $GLOBALS['query'];
    }

    $GLOBALS['query'] = 'SELECT * FROM table_name';

    register_shutdown_function'myShutdown' );
    ?>
    Non ti risolve tutti i problemi ma almeno e' qualcosa.
    Ciao ciao!

  7. #7
    Grande El Pedro.

    mi risolve invece gran parte dei problemi.

    La funzione che tu mi hai descritto cattura proprio gli errori FATAL che erro_handler() non riesce a decifrare e mi esegue il codice che io definisco nella funzione. quindi posso tenere traccia degli errori FATaL e segnarmi quello che voglio nel db.

    Ti darei un bacio, grande!!

    adesso devo solo capire come catturare gli altri tipi di errori e fare la stessa cosa..

    ti voglio bene

    eheh

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.