Eventi a tempo con php / MySQL

Ho bisogno di un modo per modificare un valore in una tabella dopo che è trascorso un certo periodo di tempo. Il mio metodo attuale è il seguente:

  • inserire l'ora di fine per il periodo di attesa nella tabella
  • quando un utente carica una pagina che richiede la modifica del valore, verifica se corrente> = ora di fine
  • se lo è, cambia il valore e rimuovi il field dell'ora di fine, se non lo è, non fare nulla

Questa sarà una delle caratteristiche principali del sito, quindi l'efficienza è la chiave; tenendo presente questo, probabilmente puoi vedere il problema con come lo sto facendo. Quella stessa porzione di codice verrà chiamata each volta che qualcuno accede a una pagina che ha bisogno di informazioni.

Eventuali suggerimenti per miglioramenti o methods migliori sarebbero molto apprezzati, preferibilmente in php o perl.

In risposta alle risposte di lavoro di cron: Grazie, e mi piacerebbe fare qualcosa del genere se ansible, ma i limiti degli host sono il problema. Poiché questa è una parte importnte dell'app, non può essere limitata.

perché non usare un cron per aggiornare queste informazioni dietro le quinte? in questo modo puoi scaricare i controlli su each colpo di pagina e in realtà puoi pianificare i tempi per soddisfare i requisiti della tua app.

La tua soluzione sembra molto logica, dal momento che non hai accesso a cron. Un altro modo potrebbe essere memorizzare il valore in un file, e la prossima volta che la pagina viene caricata, controlla quando è stata modificata l'ultima volta (filemtime ("checkfile.txt")), e decidi se è necessario modificarlo di nuovo. Dovresti testare le performance per entrambi i methods.

Puoi usare un cron job per controllare periodicamente each field nel database e aggiornarlo in quel modo?

Gran parte di ciò è la frequenza con cui sono richiesti gli aggiornamenti. Molti host condivisi limitano la frequenza dei controlli cron, ad esempio non più di each 15 minuti, che potrebbero influire sull'applicazione.

È ansible utilizzare un trigger di qualche tipo su each caricamento della pagina. Non ho davvero idea di come ciò possa influire sulle performance, ma forse qualcun altro può far luce.

Se le performance iniziano veramente a essere un problema, (il che significa molto più di quanto tu probabilmente pensi) potresti usare memchached per memorizzare le informazioni …