Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Script di test/debug. Cosa ne pensate?

    Ciao, ho creato un file per testare script in modo trasparente su un sito, e volevo sapere la vostra opinione di esperti, e se qualcuno di voi lo farebbe in modo migliore


    Il mio file si chiama 'fork_flux.php', il cui codice è qui di seguito (il codice che vi mostro è scritto per funzionare su un forum phpBB).

    Quello che fa è semplice: devia il codice su un file secondario sostitutivo, che ha lo stesso nome del file originario più un suffisso. Ad es. se il file originario è "prova.php" il file secondario sarà "prova2.php".

    Il file sostitutivo viene eseguito solo da colui che lo debugga, mentre tutti gli altri non si accorgono di nulla (poiché continuano a eseguire il file originario). È quindi necessario un sistema di autenticazione (più o meno sicura) per poter sapere chi è autorizzato a vedere il file. L'accesso concorrente può essere implementato modificando opportunamente il file di debug.

    Il file sostitutivo può trovarsi nella stessa cartella del file originario o in un'altra cartella: lo trovo comodo nel caso che i file originari siano localizzati in cartelle diverse, quindi metterò tutti i file secondari nella stessa cartella e accederò solo a quella, anziché fare avanti e 'ndré. I file modificati possono anche venire inclusi in altri file senza che il risultato cambi.

    Per farlo funzionare, bisogna aggiungere una riga nei file originari (l'ho messa nello script) all'inizio del file, e mettere una graffa chiusa alla fine del file. Il controllo centralizzato è comodo perché, nel caso che si stiano modificando più file contemporaneamente, si può passare dalla modalità normale alla modalità di debug modificando solo un valore nel file di debug.


    Aggiungereste/modifichereste qualcosa? Lo fareste in altro modo?


    fork_flux.php :
    Codice PHP:
    <?php

    /************************************/
    /*        Luffio © 2012        */
    /************************************/

    // Loads an alternative file. For testing purpose. Copy the following line to the very
    // beginning of the original file after the 'Start session management' section and add a '}' to
    // the very end of the file.
    // You can specify './' (current path) or '/' (home path) or '/TREEPATH/' (where TREEPATH
    // is like '/mydir1/mydir2/') as argument to 'define_flux'.

    // include_once($phpbb_root_path . 'fork_flux.' . $phpEx); if($new_flux=define_flux()) include($new_flux);else{

    if(!defined('FILENAME_SUFFIX'))
        
    define('FILENAME_SUFFIX''2');

    if(isset(
    $user) && !defined('itsme'))
        if(
    $user->data['username'] == 'Luffio')
            
    define('itsme'1);
        else
            
    define('itsme'0);


    function 
    define_flux($path './'$suffix ''){
        if(!
    itsme)return;

                
    $fork ;     // fork flux here

        
    if(!$fork)return;
        if(!
    $suffix)$suffix FILENAME_SUFFIX;
        global 
    $phpbb_root_path$phpEx;
        
    $trace debug_backtrace();
        if(
    $path == './')
            return 
    $phpbb_root_path str_replace('\\''/'substr($trace[0]['file'],57,-strlen($phpEx)-1)) . $suffix ".$phpEx";
        else
            return 
    $phpbb_root_path substr($path,1) . substr($trace[0]['file'],strrpos($trace[0]['file'],'\\')+1,-strlen($phpEx)-1) . $suffix ".$phpEx";

    }

    //}

    ?>
    Struttura del file originario :
    Codice PHP:
    <?php

    /*
    Gestione dell'autorizzazione,
    a meno che non sia già gestito
    nel file includente
    */

    include_once($phpbb_root_path 'fork_flux.' $phpEx); if($new_flux=define_flux()) include($new_flux);else{


    // script originario eseguito da tutti tranne da chi debugga


    }

    ?>

  2. #2
    Scusa la domanda, ma a cosa servirebbe sto debug????

  3. #3
    Originariamente inviato da Samleo
    Scusa la domanda, ma a cosa servirebbe sto debug????
    Questo script serve a modificare il sito in modo completamente trasparente,
    senza modificare i file del sito, poiché basta fare una copia del file da modificare e lavorare su quella,
    senza che gli utenti se ne accorgano, perché l'unica persona che vede i cambiamenti è il programmatore,
    senza dover mettere 1000 condizioni su un unico script per distinguere i contenuti che può vedere il programmatore da quelli visibili agli utenti normali,
    senza dover ricopiare o includere parti del sito in file distinti, perché funziona direttamente come se fosse il sito vero.

    Se hai capito, cosa ne pensi? ^^

  4. #4
    Ciao,
    per test/debug script php la prassi è
    http://devzone.zend.com/1115/an-intr...esting-in-php/

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Originariamente inviato da whisher
    Ciao,
    per test/debug script php la prassi è
    http://devzone.zend.com/1115/an-intr...esting-in-php/

    È un po' lunga la storia... un riassuntino?

    Cmq qualcuno può dare un giudizio sul mio script? Grazie.

  6. #6
    mah. detto in parole povere praticamente il tuo script abilita la modalità debug del sito solo per determinati utenti mentre gli altri continuano a vedere quello che funzionava prima... mah.. non si fanno così le cose. Un pò si usa UNIT per testare le funzionalità (vedi link che ti hanno dato), un pò si usa una versione intermedia del sito, diciamo di sviluppo, prima di mandare in produzione il tutto... del tipo

    - il programmatore lavora su copia locale
    - il programmatore aggiorna una copia di sviluppo visibile da tutti gli sviluppatori
    - le modifiche dalla copia di sviluppo vengono passati alla copia di test
    - viene eseguito il debug sulla copia di test, se passa le modifiche vengono passate alla copia di produzione

    phpunit serve per i primi due punti. nel terzo punto servirebbe prendere una serie di scimmie che si mettono lì ad eseguire le procedure da testare (login/logout/nuovo post/etc) e confermare che funzioni tutto.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.