Precedente :: Successivo |
Autore |
Messaggio |
gek Eroe


Registrato: 22/01/06 16:55 Messaggi: 53 Residenza: Ravenna
|
Inviato: 19 Lug 2008 15:03 Oggetto: php e mysql. timed task |
|
|
ciao! sto creando un sito in php + mysql. Ho una form per la registrazione che invia una mail con un link da cliccare per poter essere attivati.
i dati relativi alla registrazione io li inserisco in una tabella temporanea, dopo devono rimanere memorizzati per 24h.. Ecco dunque il mio problema: avendo io acquistato dello spazio su Aruba, come posso creare un tasked "temporizzato", un trigger.. qlcosa che dopo 24h dall'inserimento in tabella mi cancelli la linea selezionata?
grazie, Giacomo |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 19 Lug 2008 17:46 Oggetto: |
|
|
Se hai la possibilità di smanettare con cron oppure con qualunque altro sistema di pianificazione sul server ti conviene creare uno script che si preoccupi di eliminare le righe quando viene chiamato e programmi lo schedulatore affinchè lo faccia partire ogni (ad esempio) 30 min.
Quando uscirà la versione 5.1 stabile di mysql allora questa gestirà da sola la pianificazione.
Al momento altri modi non me ne vengono in mente. |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 19 Lug 2008 19:20 Oggetto: |
|
|
Da non esperto di php e MySQL,
ma giusto come idea ... in generale:
Oppure setti una cron che ogni 24 ore lanci un programma che elimini tutte quelle che nel frattempo sono scadute (cioè sono più vecchie di 24 ore).
Certo così c'è il rischio che qulcuna resti di più nella tabella temporanea.
Esempio:
All'1 di notte del giorno 1 cron lancia il proramma di pulizia
Allle 2 di notte del giorno 1 un utente si registra.
All'1 di notte del giorno 2 cron lancia il proramma di pulizia, tale programma vedrà i dati di quella registrazione, ma essendo vecchi solo 23 (< 24 ore) ore non li rimuoverà.
(Allle 2 di notte del giorno 2 in teoria quei dati scadrebbero. In realtà non succede niente e l'utente può ancora registrarsi)
All'1 di notte del giorno 2 cron lancia il proramma di pulizia, tale programma vedrà i dati di quella registrazione, e poiché sono più vecchi di 24 ore li cancellerà.
La durata varia qindi tra 1 giorno e 1 giorno 23ore 59 minuti ecc. ecc. (diciamo 2 giorni).
Volendo puoi ridurre questo tempo, impostando cron in modo che esegua il programma di pulizia più spesso. Ad es. 4 volte al giorno (ogni 6 ore), in questo modo la durata massima diventa 1 giorno 5 ore 59 minuti ecc. ecc..
Non penso sia un grosso problema, a meno che a te serva che assolutamente un utente non possa registrarsi se è pasato anche un solo minuto in più rispetto alle 24 ore previste.
In questo modo i vari lavori programmati ad una certa ora li setti tu in anticipo (di solito l'hosting provider fornisce un'interfaccia grafica,
mentre non è deto che il tuo programam php sia autorizzato a creare pianificare l'esecuzioen di un programma ad un certo orario) |
|
Top |
|
 |
gek Eroe


Registrato: 22/01/06 16:55 Messaggi: 53 Residenza: Ravenna
|
Inviato: 21 Lug 2008 01:10 Oggetto: buona idea |
|
|
le idee mi sembrano entrambe buone.. solo che non sono sicuro di poter accedere a cron... qualcuno che abbia un account su aruba sa se è possibile ed eventualmente come??
altrimenti io avevo pensato di controllare PRIMA di accettare un nuovo utente, e di cancellare tutte le pre-iscrizioni più vecchie di 24 ore, e solo a quel punto procedere alla query di ricerca. in questo modo anche se i dati stanno effettivamente più tempo nella tabella temp, in effetti non sono accessibili dopo le 24 ore canoniche. che ne dite?
(tra l'altro credo che questo sia il metodo usato da phpnuke...) |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 21 Lug 2008 11:32 Oggetto: |
|
|
Ad occhio e croce però se per assurdo nessun nuovo utente chiede di registrarsi tu non hai nulla che spurghi il db. |
|
Top |
|
 |
gek Eroe


Registrato: 22/01/06 16:55 Messaggi: 53 Residenza: Ravenna
|
Inviato: 22 Lug 2008 11:18 Oggetto: db pieno |
|
|
questo è pure vero, ma in quel caso al massimo resta pieno di tante righe quanti sono gli utenti che hanno riempito il form, hanno aspettato più di 24 ore e non si sono registrati, a partire dal momento in cui l'ultimo utente si registrò. non saranno più di 1 o 2 voci a mio avviso... |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 22 Lug 2008 11:46 Oggetto: |
|
|
Diamo per buono che non puoi gestire cron.
Se la cancellazione avvenisse da parte della pagina che l'utente deve chiamare entro le 24 ore tu risolvi il problema. La pagina controlla se la riga corrispondente a quella registrazione è troppo vecchia: se così non registra è cancella la riga altrimenti registra e cancella la riga.
In più tu prepari lato amministratore una pagina che viene chiamata a mano ogni tanto e che controlla la presenza nella tabella di righe troppo vecchie: se le trova le cancella.
Facendo così il db resta pulito perchè comunque è la pagina di conferma che si occupa di pulire; per le iscrizioni "appese" non confermate c'è lo script manuale che fai partire ogni tanto. |
|
Top |
|
 |
gek Eroe


Registrato: 22/01/06 16:55 Messaggi: 53 Residenza: Ravenna
|
Inviato: 22 Lug 2008 17:18 Oggetto: |
|
|
io dico che cron è inutilizzabile.. ma solo perché non ho trovato nessuna smentita per la rete. qlcuno sa se aruba permette di impostare tasks con cron? e se si come si fa?
cmq la soluzione di lanciare ogni tanto un batch di pulizia non è poi così male.. magari che faccia anche altre cose (backup, pulizia di più tabelle...) perfetto. grazie mille per l'aiuto!! |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 22 Lug 2008 17:57 Oggetto: |
|
|
gek ha scritto: | io dico che cron è inutilizzabile.. ma solo perché non ho trovato nessuna smentita per la rete. qlcuno sa se aruba permette di impostare tasks con cron? e se si come si fa? | C'è un pannello di controllo?
Se sì, c'è una seizone tipo "operazioni pianificate"? |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 22 Lug 2008 18:37 Oggetto: |
|
|
dimenticavo,
il tuo hosting è Linux o Windows? |
|
Top |
|
 |
gek Eroe


Registrato: 22/01/06 16:55 Messaggi: 53 Residenza: Ravenna
|
Inviato: 22 Lug 2008 22:40 Oggetto: hosting |
|
|
il sito in questione effettivamente è hosting Windows, ma ho altri domini che invece sono Linux con lo stesso sistema di registrazione. |
|
Top |
|
 |
|