Aggiornare database in un determinato orario [era: Dati database]
cè uno script che supponiamo ogni ora (o tempo da me determinato) aggiunge o toglie 100 (o un valore configurabile) ad un valore inserito in un database (mysql). Il valore che aggiunge deve essere però aggiunto ad intervalli uguali... nn so se mi spiego quindi vi faccio un esempio.
Voglio aggiungere 60 ad un valore e deve avvenire in un ora...però nn che sia aggiunto allo scadere dell'ora ma 60/60min = 1 quindi, in questo caso ne aggiunge solo 1 ogni minuto...
scusate se nn mi esprimo bene...ma sn abituato ad arrangiarmi...e i termini nn li conosco bene...
so poco ma capisco in fretta...vi ringrazio in anticipo
FunCool: Ho modificato il titolo alla discussione, la prossima volta cerca di scrivere un titolo che riassuma il tuo problema.
Ultima modifica di funcool : 02-11-2006 alle ore 18.10.17
ho in mente di creare un gioco di ruolo...tipo ogame...per farti un esempio...ovviamente meno complicato...cerco pure altri sviluppatori che mi vogliono aiutare...
quindi...per faarti un esempio voglio che ad un utente gli vengano aggiunte delle risorse (che vengono impostate in base al suo livello) ogni ora...
Beh potresti fare una cosa del genere:
- quando l' utente si disconnette scrivi l' ora nel db
- quando si riconnette guardi che ora è
- fai la differenza fra ora attuale - ultimo accesso
- fai i dovuti calcoli e aggiungi le risorse (non sò se si può con php, ma ad esempio con excel ogni numero equivale ad una data) e metti che ottieni che si è disconnesso per 3 ore, gli aggiungi 3 ore di risorse.
è la prima cosa che mi è venuta in mente, potrebbe essere un' idea :P
Se il gioco non è troppo complicato e ti può servire una mano di un "principiante" in php io sono disponibile, manda pure un pm se ti interessa :D
è troppo un casino perche gli utenti stanno connessi ore e ore...le risorse le utilizzano ogni 10 o 20 minuti...quindi dovrebbero disconnettersi e riconettersi ogni volta...
penso di fare un semplice gdr...senza l'uso di risorse...
cmq grazie a tutti...
se cmq vi torna in mente qualcosa fatemi sapere...
FunCool: Se vuoi inserire il link del tuo sito, mettilo nella firma.
Ultima modifica di funcool : 05-11-2006 alle ore 17.24.13
Ma no, non è strettamente necessario farlo al login, hai preso le indicazioni troppo alla lettera.
Dunque, va benissimo fissare dei "paletti" per l'ammontare delle risorse, ovvero il momento in cui scrivere su db QUANTE risorse e QUANDO, diciamo che tale aggiornamento su db si può fare (anche) al logout dell'utente come suggerito da playbriscola, ma penso sia più "solido" farlo ad ogni operazione sulle risorse per es. ogni volta che spendi le risorse o insomma ogni volta che vengono alterate da qualche evento, dunque investimento o "rapina"
Altrimenti non funzionerebbe il meccanismo.
POI in php, meglio con una UNICA function per non impasticciare il codice qua e là, chiedi a questa function a quanto ammonta la tale risorsa, senza andarla a leggere scolpita da qualche parte bella e pronta aggiornata (sarebbe troppo massacrante per un db un aggiornamento continuo).
La function sarà, per farti un es., una cosa come:
$metal = getResourceAmount('metal');
dove chiedi per la tale risorsa quanto è il suo ammontare al momento esatto della richiesta.
Quindi invece di leggere da qualche parte, ogni volta invochi questa function che fondamentalmente valuta al momento l'ammontare basandosi appunto sui dati scritti ovvero, quanto e quando, come ha giustamente suggerito playbriscola e come sicuramente avranno fatto quelli di ogame perché non ci sono molte alternative rispetto a questa "offset evaluation" (valuti la cifra in base ad tempo passato raffrontato con quello attuale).
Chiaro? riepilogando:
- ogni volta che l'utente non compie nulla (per es. è offline) o nessun altro influenza le sue risorse
le risorse dovrebbero solo crescere "naturalmente"
allora non si aggiorna nulla su db. Se l'utente si logga e vuol vedere quanto sono aumentate il tuo script php chiama solo la function per valutare quanto sono cresciute rispetto all'ultimo aggiornamento.
- ogni volta che nel gioco l'utente utilizza queste risorse (essendo online ovviamente) o ne riceve in dono da altri
- ogni volta che qualche ALTRO utente online ruba le risorse a questo utente
allora scrivi sul DB la cifra (sempre chiamando la stessa function di valutazione) detraendogli o sommandogli un certo tot (quanto abbiamo speso, quanto ci hanno donato/rubato) ovviamente scrivendo la data esatta (meglio "unix timestamp", un INT espresso in secondi passati dal 1 gen 1970).
Ma sbaglio o già si era parlato della stessa identica cosa alcuni mesi fa? (non pochi) se non erro avevamo anche buttato giù del codice. Proverò a cercare...
Ultima modifica di heracleum : 05-11-2006 alle ore 02.52.45
Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)
Un po' difficile solo perché mi sono dilungato nelle spiegazioni, ma fondamentalmente il meccanismo è piuttosto semplice. Certo questo solo per il discorso aggiornamento risorse, per tutto il resto ci vuole tempo, soprattutto deve essere pensato bene, fatta la cosiddetta "analisi", poi -solo poi- buttare giù il codice altrimenti viene fuori un accrocchio ingestibile.
Se il meccanismo sopra riportato ti risulta "difficilino" sarà dura fare il resto...
Personalmente non ho tempo disponibile, già normalmente visto che il mio sito è abbandonato da mesi per questioni di lavoro e altre occupazioni, poi mettici anche che a giorni mi sposo e sto via un mese intero
Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)
Fico OGame ;) eheh scusate l'off-topic sei mica su Barym o sull'universo 35? Comunque anchio ho sempre tentato di simulare le loro formule...ho creato un simulatore di ricerche ed edifici ma non sono mai riuscito a pubblicarlo su internet...
Ultima modifica di bozzysblog : 25-06-2010 alle ore 00.08.37