aggiornamento classifiche in automatico

andreaben94

Nuovo Utente
18 Lug 2011
5
0
0
ciao a tutti stavo pensado di creare un sito ma mi sono trovato di fronte a un problema.. devo creare delle classifiche all'interno del mio sito che vengono calcolate in automatico a mezzanotte tra domenica e lunedì ma non so come fare.. non devono essere aggiornate al caricamento della pagina.. deve esserci qualcosa che a mezzanotte calcola tutti i dati e modifica le classifiche nel DB come posso fare?
 
devo ancora iniziare il lavoro siccome lo inizio quando so quello che mi serve per realizzarlo.. e devo ancora scegliere l'host probabilente userò aruba quindi linux per adesso penso di farlo girare su un server casalingo su linux... cronjob non so cosa sia ma imparo infretta.. se mi dite cosa devo sapere per creare questo piccolo script lo imparo senza problemi tanto non dovrebbe essere complicato
 
Ultima modifica:
Un momento... l'uso dei cronjob potrebbe non essere necessario. Tu devi fare in modo che chiunque acceda dopo la mezzanotte veda le classifiche aggiornate, giusto? I dati nel database non devono essere recuperati da script esterni? Allora puoi salvare in un file di testo (o un database se preferisci, anche se mi sembra piuttosto inutile) lo UNIX time dell'ultima esecuzione dello script. Quando l'utente accede controlli se dalla data di esecuzione sono passate più di 24 ore. Se sono passate, allora esegui lo script. In questo modo, se un domani (speriamo di no!) dovessi decidere di passare a Windows, la tua applicazione funzionerà ugualmente, e non dovrai fare affidamento su software esterni.

Lo script dovrebbe essere più o meno così:
PHP:
<?php
// il nome del file
define('FNAME', substr(sha1('last_exec'), 0, 10));

// in caso sia la prima esecuzione
if (!file_exists(FNAME)) {
    file_put_contents(FNAME, strtotime('yesterday midnight'));
}

// controlla che sia passato un giorno dall'ultima esecuzione
$last_exec = (int)file_get_contents(FNAME);
if (time() - $last_exec >= 3600) {
    // qui esegui il tuo codice
    // ...

    // aggiorna la data dell'ultima esecuzione
    unlink(FNAME);
    file_put_contents(FNAME, time());
}
 
potrebbe essere un'idea ma non va bene poiche se nessuno apre la pagina per una settimana la classifica salta l'aggiornamento di quella settimana.. il sito deve aggiornare in qualunque caso la classifica anche se il sito non lo apre mai nessuno... fin'ora il metodo migliore è il cronjob.. mi sono informato un po su questo cronjob ma non so se si puo usare su server noleggiati tipo quelli di aruba...
 
si ma il sito deve poter interfacciarsi in automaticon con cron se gli utenti modificano delle cose il sito deve poter modificare cron.. non mi interessa l'interfaccia più di tanto..
 
Devi essere più preciso se vuoi una risposta esauriente... Non capisco in base a cosa dovrebbe essere modificato il cronjob. Io non ho mai avuto problemi di questo tipo e sviluppo applicazioni da parecchio tempo, quindi forse il tuo problema è nell'implementazione.
 
Il cron lancia uno script a determinati orari e se vuoi in giorni specifici, funziona a livello di sistema quindi non è suscettibile a modifiche dall'esterno.
 

Discussioni simili