Pagina Chat: limitare la profondità della chat
Pagina Chat: limitare la profondità della chat postato il 03/03/2009 14:03:33 nel forum programmazione, open source e hosting
Stò andando avanti. Lentamente, ma sto andando avanti.
Sono riuscito a mettere su una chat abbastanza funzionante. Però ora ho 2 dubbi:
1) come faccio per 'filtrare' i messaggi per mostrare solo gli ultimi 10 minuti? Contate che ho un campo data e un campo ora. Mi complica la vita? meglio mettere un unico campo per entrambe?
2) Ogni giorno voglio compiere solo certe operazioni, ad esempio, voglio cancellare tutti i messaggi risalenti a oltre una settimana prima.
Ovviamente questa operazione va fatta SOLO una volta al giorno. Come posso fare per farla automaticamente?
Provo a spiegarmi meglio: ho pensato di mettere quella procedura in una pagina dove ci si accede raramente, come ad es. una pagina di amministrazione. Ma anche così, come posso evitare di far la pulizia della chat ogni volta che un master entra in quella pagina?
Lo so che se la query è fatta bene, non faccio danni. Ma mi pare inutile fare un centinaio di volte la stessa query.
Anche perché dovrei approntare un ragionamento simile per il meteo, che va cambiato solo una volta ogni ora.
Visto che ci sono, vi pongo un'ultima domanda: come faccio a far aggiornare in automatico la chat?
Grazie per le risposte.
Pagine → 1
03/03/2009 14:24:23
reiuky ha scritto: Stò andando avanti. Lentamente, ma sto andando avanti.
Sono riuscito a mettere su una chat abbastanza funzionante. Però ora ho 2 dubbi:
1) come faccio per 'filtrare' i messaggi per mostrare solo gli ultimi 10 minuti? Contate che ho un campo data e un campo ora. Mi complica la vita? meglio mettere un unico campo per entrambe?
Ciao, per filtrare i messaggi degli ultimi 10 minuti si, devi usare un campo datetime nel db e salvare insieme data ed ora con il Now(), poi nella condizione puoi usare una funzione ad hoc di mysql:
Select ..., ..., .. From chat Where Date_Add(colonna_data, Interval 10 Minute) >= Now() ";
In pratica fa un controllo, somma alla colonna_data 10 minuti e verifica se il tempo uscente è maggiore di quello attuale, in questo caso lo pesca come risultato
2) Ogni giorno voglio compiere solo certe operazioni, ad esempio, voglio cancellare tutti i messaggi risalenti a oltre una settimana prima.
Ovviamente questa operazione va fatta SOLO una volta al giorno. Come posso fare per farla automaticamente?
Stessa cosa, una query di delete con la condizione in date_add
Delete .... Where Date_Add(colonna_data, Interval 1 DAY) < NOW()
In pratica somma alla colonna della data 1 giorno, e se risulta minor della data attuale la elimina
Mettila al login, così il primo che entra dopo la mezza notte ti cancella tutte le azioni del giorno prima.
Visto che ci sono, vi pongo un'ultima domanda: come faccio a far aggiornare in automatico la chat?
Grazie per le risposte.
C'era un tutorial sulle chat in php qui sul portale, direi che può tornari utile https://www.gdr-online.com/articoli_tutorial_chat_php.asp ↗
;-)
03/03/2009 16:51:48
jammer ha scritto: per il punto 2, o fai un php da avviare manualmente, o se ti appoggi su un host che ti consente di inserire dei crontab, lo metti appunto come crontab, con un intervallo di tempo di tua preferenza.
Il nome di un server che permette il crontab?
(non credo che su altervista, lo permetta).
x gli altri: grazie infinite.
03/03/2009 20:21:54
Per il punto 2:
se utilizzi MySql, dalla versione 5.1 (o 5.0, non ricordo esattamente), è possibile (sempre che il tuo ISP lo preveda) schedulare delle query, senza l'utilizzo dei crontab (quindi senza nessuna necessità di essere legato a server Windows).
Per maggiori info:
http://dev.mysql.com/tech-resources/articles/mysql-events.html ↗
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Cafuné ↗
Tibia ↗