• User Newbie

    Restore Data Base per Applicazioni Demo

    Ciao a tutti,
    vorrei esporre in questo forum una mia esigenza che non ho trovato finora in nessun forum o disponibile in rete.
    Vorrei dare la possibilità agli utenti di povare delle demo di applicazioni (open source) personalizzate e dove serve, tradotte in italiano, però senza ritrovarmi una marea di dati inseriti dagli utenti per provare questa demo (con sicuramente qualche autopromozione o link di varia natura). Perciò ho pensato di cercare uno script in perl, cgi o php da includere in un cron job, programmandolo periodicamente (esempio 48 ore) a cancellare tutti i file più vecchi di 48 ore inseriti dagli utenti, lasciando i miei contenuti originali per illustrare la demo. Penso una specie di restore o refresh del Data Base?
    Forse non è una cosa semplicissima per tutti, ma se qualcuno vorrà aiutarmi, riuscirò certamente a sdebitarmi :). Grazie


  • User Attivo

    Ciao AlexJaba e benvenuto sul forum GT,
    da quanto hai scritto non ho ben chiaro se i file e i dati sul db sono contemporanei (cioè frutto di una sola azione). Inoltre, è presente un campo data/time che consenta di determinare il tempo di inserimento dei dati?

    Indipendentemente da ciò però, la soluzione che posso consigliarti è quella di creare uno scriptino da includere nella home della tua applicazione, che, basandosi sull'orario dell'ultimo dato inserito nel db, elimini tutti i dati e reinserisca quelli tuoi ti default. Contemporaneamente a questa operazioni, giocando con le funzioni opendir() e readdir(), che ti consentono di elencare i file contenuti in una directory, cancelli tutto (comando delete(), file per file) e poi, tramite comando copy() ritrasferisci da un'altra cartella i file tuoi di default (quelli nella cartella principale potrebbero essere stati in precedenza sovrascritti).

    Ovviamente questa funzione verrebbe lanciata ad ogni caricamento della home, cosa poco intelligente se hai parecchie visite. Per ovviare a questo problema puoi giocare con un po' di statistica: ad esempio tramite $i=rand(1,100) tiri un numero casuale tra 1 e 100 e quindi fai in modo che lo scriptino di cui sopra si azioni solo se $i<10: ciò significa che mediamente lo scriptino gira 1 volta su 10. Calcolando le statistiche di accesso al sito puoi trovare ovviamente i paramentri migliori.

    Infine puoi prendere in considerazione lo script di probid per una sorta di cron in php, postato nella sezione dei tutorial.

    Facci sapere se e come risolvi!
    :ciauz:


  • User Newbie

    @ceccus said:

    Ciao AlexJaba e benvenuto sul forum GT,
    da quanto hai scritto non ho ben chiaro se i file e i dati sul db sono contemporanei (cioè frutto di una sola azione). Inoltre, è presente un campo data/time che consenta di determinare il tempo di inserimento dei dati?

    Indipendentemente da ciò però, la soluzione che posso consigliarti è quella di creare uno scriptino da includere nella home della tua applicazione, che, basandosi sull'orario dell'ultimo dato inserito nel db, elimini tutti i dati e reinserisca quelli tuoi ti default. Contemporaneamente a questa operazioni, giocando con le funzioni opendir() e readdir(), che ti consentono di elencare i file contenuti in una directory, cancelli tutto (comando delete(), file per file) e poi, tramite comando copy() ritrasferisci da un'altra cartella i file tuoi di default (quelli nella cartella principale potrebbero essere stati in precedenza sovrascritti).

    Ovviamente questa funzione verrebbe lanciata ad ogni caricamento della home, cosa poco intelligente se hai parecchie visite. Per ovviare a questo problema puoi giocare con un po' di statistica: ad esempio tramite $i=rand(1,100) tiri un numero casuale tra 1 e 100 e quindi fai in modo che lo scriptino di cui sopra si azioni solo se $i<10: ciò significa che mediamente lo scriptino gira 1 volta su 10. Calcolando le statistiche di accesso al sito puoi trovare ovviamente i paramentri migliori.

    Infine puoi prendere in considerazione lo script di probid per una sorta di cron in php, postato nella sezione dei tutorial.

    Facci sapere se e come risolvi!
    :ciauz:

    Grazie per l'ospitalità Ceccus, purtroppo ho girato un pò per la rete alla ricerca di soluzioni ed ho trovato frammentato quà e là alcuni imput.
    Non penso sia una cosa complessa da capire, ma è facile a farsi solo per chi sà scrivere questi script sia php o perl ecc..., io purtroppo facendo più la parte grafica nei siti e sistemi di comunicazione web e poca programmazione, mi limito solamente a comprendere e modificare solo ciò che mi serve e questi sono i risultati, ma nella vita non si può fare tutto e importante penso sia arrivarci comunque in qualche modo.

    Allora, grazie per i tuoi consigli Ceccus, ma penso che per fare quello che richiedo, si dovranno tenere in considerazione alcune cose:

    • Gli user sono registrati con stesso user e password.
    • i dati che dovranno essere cancellati sono solo di questi user registrati.
    • i dati dell'admin no.
    • i dati che dovranno essere cancellati, dovranno essere più vecchi di x ore, le modifiche dell'ultima ora di questi dati verranno cancellati comunque.
    • verranno cancellati anche i dati dell'user inseriti sul profilo (più vecchi di x ore).Ho sul server la possibilità di programmare un cron job per account e impostando ora, giorno, mese e richiamare questo script che andrà ad agire sul db nome x .

    Mi chiedevi se i file sono contemporanei e frutto di una sola azione, la risposta e NO, visto che ogni utente potrà creare dei dati entrando anche simultaneamente nell'applicazione che proveranno come demo (i dati sul db hanno tutti una data di creazione e modifica).

    Questo script dovrà per forza essere lanciato periodicamente tramite un cron job.
    lo script dovrà una volta lanciato individuare il db (nome), cercare i file di utenti registrati con user (X) e passw (X) e cancellare i file + vecchi di tempo (esempio 48 ore) e fare un aggiornamento o ottimizzare il db per compattare o defframentare.
    :rollo: Spero di essere stato abbastanza chiaro, altrimenti chiedetemi pure.
    Grazie a tutti comunque, io nel frattempo continuo a cercare e spero di trovare questo script o qualcuno che mi possa aiutare.