ciao, devo fare un confronto tra la data corrente dello scritp e la data letta dal database.
se la differenza è maggiore di 10 min ----faccio qualcosa. come posso fare?
esiste un datediff in php?
ciao e grazie
ciao, devo fare un confronto tra la data corrente dello scritp e la data letta dal database.
se la differenza è maggiore di 10 min ----faccio qualcosa. come posso fare?
esiste un datediff in php?
ciao e grazie
ciao, ho fatto così.
se a qualcuno viene un'idea meglio...sono qua! e grazie
codice:SELECT TIMEDIFF(NOW(), data_e_ora) AS differenza, $recordset = $c_newsletter->ritorna_coda(); while ($record = mysql_fetch_array($recordset)) { if (substr($record['differenza'], 3, 2) > 10) { print "+ di 10 min"; } }
ti ritornano solo i record dove si superano i 10 minuti.codice:SELECT * FROM tabella WHERE if(datediff(now(), data_e_ora) > '00:10:00', 1 , 0)
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
grazie piero.mac.
questo codice mi server perchè mi devo fare da solo una coda delle newsletter da inviare in quanto la web farm non mi permette di inviare + di 300 mail ogni 10 min.
per questo pensavo di creare una tabella coda (id, email, oggetto, testo, headers, data_e_ora) in cui appena dopo aver inviato le prime 300 aggiornava l'ora di invio.
esempio se alle 12.00 invio le prime 300, faccio l'update in tutte le altre in modo ceh abbiamo 12.00 come data_e_ora.
poi, quando la condizione che hai mostrato tu è vera, invio le altre 300 mail e aggiorno tutte le rimanenti a 12.10 o 12.12, quello che è perchè l'evento me lo fa scattare la visita di un utente sulla pagina index (per fortuna abbiamo 600/700 visite al giorno).
cosa ne dici?
è una buona soluzione?
e chi lo sa se e' buona.
potresti per esempio fare anche cosi':
se tanto mi da tanto dovresti aggiornare d'un botto tutti i record pescati in precedenza e mettere in tutti i record lo stesso valore di data_e_ora, poiche' now() legge una sola volta l'ora dal server e l'applica a tutto il range di record. In questo modo escluderesti via via i record inviati. Ma ... c'e' un ma. Puoi fare questa operazione solo ogni 10 minuti e quindi devi tenere il conto dell'ultimo invio fatto e attendere il timeout dei 10 minuti. Quindi poi devi scandire tutti i record .... e se li hai aggiornati puo' ripetere l'invio allo stesso record.codice:SELECT * FROM TABELLA WHERE if(datediff(now(), data_e_ora) > '00:10:00', 1 , 0) ORDER BY data_e_ora limit 300 poi subito a seguire: update tabella set data_e_ora = NOW() WHERE if(datediff(now(), data_e_ora) > '00:10:00', 1 , 0) ORDER BY data_e_ora limit 300
forse e' meglio alzare una flag nel record... tipo "data_e_ora" -" inviato 0/1". Quindi controllando sia il tempo trascorso e se il record e' stato inviato dovresti scandire tutta la tabella senza ripetizioni e senza tralasciare qualcuno. a fine invio resetti la flag e ricomincia la solfa.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
ciao, potrei fare la select, inviare la mail per ogni record, cancellare i 300 record e update su tutti gli altri con now(). così nella tabella avrei sempre i record con le email da inviare e sarebbero tutte con la stessa data e ora che ad ogni invio viene modificata.
cosa ne dici?
grazie
ciao
scrivere e cancellare quando puoi solo fare un UPDATE "collettivo".... boh!.. vedi tu.Originariamente inviato da verardoelvis
ciao, potrei fare la select, inviare la mail per ogni record, cancellare i 300 record e update su tutti gli altri con now(). così nella tabella avrei sempre i record con le email da inviare e sarebbero tutte con la stessa data e ora che ad ogni invio viene modificata.
cosa ne dici?
grazie
ciao
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
ciao, il fatto è che la tabella diventerebbe presto piena di record.
se l'admin del sito mi invia 2 o 3 newlsetter a tutti i 1500 e passa utenti, in pochi gg la tabella avrebbe oltre 4500 record. trattandola come una vera e propria coda, ad ogni gruppo di 300 mail inviate, vorrei cancellarle per rendere più veloci le letture e tutto il resto.
ciao
E allora fai un delete al posto dell'update.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.