bravo![]()
bravo![]()
Ok ragazzi stamane ho avuto le cadenze tra cui si può scegliere per fal partire in automatco gli script:
- ogni lunedì
- ogni venerdì
- 1 del mese
- 15 del mese
- 30 giugno
- 31 dicembre
Lunedì incomincio lo sviluppo, quindi anche se le idee che mi avete fornito sono già più che sufficienti sono ben accetti altri consigli, soprattutto su come potrei strutturre le query per soddisfare tali richieste.
Mc
piero xo in questo modo è un problema definire il tutto perché se hai più utenti devi aggiungere una colonna alla tabella del sito e per ogni giorno devi inserire una rigaOriginariamente inviato da piero.mac
Una schedulazione ampiamente gestibile dall'utente l'avevo fatta tempo fa (parecchio) tramite una tabella calendario.
ogni utente si schedula con un 1/0 il giorno che vuole il backup a prescindere dal giorno della settimana. Giornalmente lo scheduler interroga la tabella calendario. Se trova 1 parte il backup, se finisce a buon fine setta la flag a 2, altrimenti setta a 1 per il giorno dopo (riprova) e 3 l'odierno tentativo fallito. Si tratta di 365 record all'anno e ti tiene pure lo storico degli esiti. L'utente puo' accedere solo alla colonna della tabella calendario di sua competenza ovviamente.codice:---------------------------------------- -- data | user_1 | user_2 | user_3 | ------------------------------------------- 2005-01-12 | 1 | 0 | 1 | -------------------------------------------
Anche le query sono semplici da gestire. oggi sara' NOW() o CURDATE, domani sara' curdate() + interval 1 day ecc. ecc.
Non so pero' poi come sia stata fatta l'implementazione. Mi pare che scaricava i dati su cassetta DAT. Era una cosa abbastanza complessa di cui avevo solo fornito alcune parziali consulenze. Ma so che hanno fatto cosi' e' che funziona benissimo. il db era su ORACLE.
![]()
anche perché poi a mc serve anche poter specificare il tipo di informazioni da estrarre quindi non è possibile avere una tabella di quel tipo (almeno credo)![]()
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
E' un esempio... e' una tabella apposita che gestisce i dati di backup... dove gli user sono parecchi con competenze diverse e dati diversi da gestire. (commerciale, tecnico, admin, magazzino and more...) Ognuno mette la flag se gli serve e nella notte parte il backup dei suoi dati.Originariamente inviato da daniele_dll
piero xo in questo modo è un problema definire il tutto perché se hai più utenti devi aggiungere una colonna alla tabella del sito e per ogni giorno devi inserire una riga
anche perché poi a mc serve anche poter specificare il tipo di informazioni da estrarre quindi non è possibile avere una tabella di quel tipo (almeno credo)![]()
Ma anche nel suo caso farei comunque una tabella che gestisca esclusivamente questi backup... non aggiungerei alcuna colonna a nessuna tabella. Tutto piu' libero e flessibile. Si tratta poi di qualche centinaia di record....
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
si infatti...una cosa del tipoOriginariamente inviato da piero.mac
E' un esempio... e' una tabella apposita che gestisce i dati di backup... dove gli user sono parecchi con competenze diverse e dati diversi da gestire. (commerciale, tecnico, admin, magazzino and more...) Ognuno mette la flag se gli serve e nella notte parte il backup dei suoi dati.
Ma anche nel suo caso farei comunque una tabella che gestisca esclusivamente questi backup... non aggiungerei alcuna colonna a nessuna tabella. Tutto piu' libero e flessibile. Si tratta poi di qualche centinaia di record....
![]()
data, utente, cosa_tirar_fuori
magari cosa_tirar_fuori lo si crea come SET in questo modo se si vogliono tirar fuori + cose si può fare senza impazzire
il discorso della data però è problematico perché essendo che può contenere variori variabili non ci può stare una data "normale" e basta deve starci dentro qualche accrocchio con il quale lui si definisce il tutto
altrimenti usando le date può impostare mese ed anno a zero per far si che il programma capisca che quella data è un giorno del mese e non un giorno e basta, però come fare a dirgli che deve essere un giorno della settimana?sarebbe molto più arzigogolato gestire i giorni della settimana con date (credo)
![]()
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
ma nel suo caso e' veramente semplice.... il primo, 15, 30 giugno, 31 dicembre sono date fisse. il lunedi' ed il venerdi' sono anche loro fissi come dayofweek. lo scheduler deve partire tutte le notti. Fa una select cercando le date fisse, se non trova niente altra query e cerca il giorno della settimana, se trova niente controlla che non sia il 30 giugno o 31 dicembre. Cosi' se trovasse la corrispondenza giorno 1/15 con un lunedi' o venerdi' fara' automaticamente un solo backup saltando le successive ricerche.Originariamente inviato da daniele_dll
si infatti...una cosa del tipo
data, utente, cosa_tirar_fuori
magari cosa_tirar_fuori lo si crea come SET in questo modo se si vogliono tirar fuori + cose si può fare senza impazzire
il discorso della data però è problematico perché essendo che può contenere variori variabili non ci può stare una data "normale" e basta deve starci dentro qualche accrocchio con il quale lui si definisce il tutto
altrimenti usando le date può impostare mese ed anno a zero per far si che il programma capisca che quella data è un giorno del mese e non un giorno e basta, però come fare a dirgli che deve essere un giorno della settimana?sarebbe molto più arzigogolato gestire i giorni della settimana con date (credo)
![]()
Ordinandole secondo la probabilita' maggiore. es.:
Questo per esempio senza tabella gli fa i backup del lunedi' e venerdi', dei giorni 1/15, del 30/6 e 31/12.codice:SELECT IF(DAYOFWEEK(CURDATE()) = 2 or DAYOFWEEK(CURDATE()) = 6, 'fare il backup', 'fare una pippa) SELECT IF(DAYOFMONTH(CURDATE()) = 1 or DAYOFMONTH(CURDATE()) = 15, 'fare il backup', 'fare una pippa) SELECT IF(CURDATE() = CONCAT(YEAR(NOW()),'-06-30') or CURDATE() = CONCAT(YEAR(NOW()),'-12-31'), 'fare il backup' , 'fare una pippa)
Ma dipende sempre da quel che gli serve ... of course.
editato per qualche parentesi mancante.... ed il CONCAT![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Le query di piero sono perfette, alla fine mischierò le idee di pietro e daniele e dovrei ottenere quello che spero.
Lunedì inizio e Vi so dire, così poi scrivo la pillola.
Grazie a tutti.
Mc
si ma cosi il problema non si risolveOriginariamente inviato da piero.mac
ma nel suo caso e' veramente semplice.... il primo, 15, 30 giugno, 31 dicembre sono date fisse. il lunedi' ed il venerdi' sono anche loro fissi come dayofweek. lo scheduler deve partire tutte le notti. Fa una select cercando le date fisse, se non trova niente altra query e cerca il giorno della settimana, se trova niente controlla che non sia il 30 giugno o 31 dicembre. Cosi' se trovasse la corrispondenza giorno 1/15 con un lunedi' o venerdi' fara' automaticamente un solo backup saltando le successive ricerche.
Ordinandole secondo la probabilita' maggiore. es.:
Questo per esempio senza tabella gli fa i backup del lunedi' e venerdi', dei giorni 1/15, del 30/6 e 31/12.codice:SELECT IF(DAYOFWEEK(CURDATE()) = 2 or DAYOFWEEK(CURDATE()) = 6, 'fare il backup', 'fare una pippa) SELECT IF(DAYOFMONTH(CURDATE()) = 1 or DAYOFMONTH(CURDATE()) = 15, 'fare il backup', 'fare una pippa) SELECT IF(CURDATE() = CONCAT(YEAR(NOW()),'-06-30') or CURDATE() = CONCAT(YEAR(NOW()),'-12-31'), 'fare il backup' , 'fare una pippa)
Ma dipende sempre da quel che gli serve ... of course.
editato per qualche parentesi mancante.... ed il CONCAT![]()
![]()
se è builted in a che serve disperarsi più di tanto![]()
il punto era proprio farlo "flessibile" se domani vogliono aggiungere un altro backup devono modificare il codice
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
Si Daniele,
ma alla fine hanno deciso che le possibilità saranno solo quelle di cui sopra quindi ogni luned', ogni venerdì ecc.....
Al massimo si aggiungeranno tipologie di report da fare ma la frequenza sarà fissata sempre e solo a quelli di cui sopra.
Certo così la cosa è meno interessante ma sicuramente + semplice.
Ok, ho incominciato ed ho già un problema
La cosa dovrebbe funzionare così:
- setto tramite i comandi AT di windows uno script che mi parte ogni notte alle 3.00
- questo script è lanciato tramite un batch che lancia direttamente lo script senza aprire il browser (grazie daniele)
- lo script fa delle query per vedere se per il giorno corrente ci sono delle operazioni da fare
Ora quando una di queste query da un risultato positivo dovrei lanciare uno script sempre senza che si apra il browser. Il fatto è come realizzo questa cosa? Potrei usare un semplice include ma la cosa non mi entusiasma, avete un'idea migliore?
Grazie, Mc