Visualizzazione risultati 1 fino 17 di 17

Discussione: Cron è previsto in altervista?

  1. #1
    Guest

    Predefinito Cron è previsto in altervista?

    Salve ragazzi, spero di aver centrato la sezione (e sinceramente sono in dubbio).
    Volevo sapere se su altervista è previsto l'uso dei crontab (o operazioni pianificate se preferite).
    Ultimamente ho esigenza di eseguire un file php con accesso al database mysql ogni singolo secondo della giornata. Arrivo diretto al punto con le mie assillanti domande :

    1) È possibile attivare uno o più cron su altervista ?

    2) Se è possibile qualcuno potrebbe spiegarmi il procedimento (dato che non mi so muovere senza linea di comando)

    3) Secondo voi eseguendo questo demone quale sarebbe la situazione a livello di prestazioni ?

    4) Se la terza dovesse avere risposta disastrosa (come sto immaginando al momento) quanta banda - memoria servirebbe (senza contare la classe del database che dovrebbe essere obbligatoriamente o 4 o 6 in quanto dovrei eseguire ogni secondo un select e un update, nonché gestire le operazioni degli utenti)

    Vi ringrazio anticipatamente

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,672

    Predefinito

    cron è stato attivato da un po di tempo....

    Lo puoi attivare andando sul pannello di controllo--> tools --> altro --> Operazioni pianificate (cron jobs) (ultimo a sinistra)

    Ciao!
    Ultima modifica di alemoppo : 17-05-2010 alle ore 17.27.28

  3. #3
    Guest

    Predefinito

    Ti ringrazio molto ^^
    Qualche idea su quanto la pesantezza del demone possa gravare sull'efficienza dello spazio ?

    EDIT : Rimane il problema dell'aggiornamento al secondo, a quanto pare è possibile farlo solo all'ora, meno non è possibile...
    Ultima modifica di mhtitalia : 17-05-2010 alle ore 17.42.24

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,672

    Predefinito

    cioè?? Ho capito male, spero!

    Tu vorresti, per 24h/24 avere attivato chron che effettua delle query OGNI SECONDO!!!!????

    (a parte tutto), sai che questo ti costa 24h*60min*60sec = 86400 volte al giorno = 86400 AC/giorno!??

    Sicuramente c'é un modo più astuto per fare quello che vorresti...

    Ciao!

  5. #5
    Guest

    Predefinito

    Non mi ero accorto del costo supplementare XD
    Comunque, sì hai capito bene, mi serve un sistema che aggiorni in tempo reale la data espressa in timestamp, in sostanza ciò che avevo pensato era : attivo il cron che fa partire il time(), aggiorno il database. In alternativa c'è la possibilità d'includere il file in ogni pagina (con lo stesso sistema ma senza cron) ma a quel punto l'inconveniente c'è e si vede : se 86400 sono tanti... pensa che più utenti possono attivare lo script nello stesso secondo, e comunque ci sarebbe un altro problema : chi aggiorna il timestamp del database quando nessuno è collegato al sito ? Alternativamente si potrebbe settare il cron nelle restanti ore in cui non c'è traffico, ma qualcosa mi sfugge.

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,672

    Predefinito

    ma scusa... Non potresti far aggiornare il timestamp solo se un utente visita la pagina? Se non c'é nessuno collegato, a che ti serve aggiornarlo?

  7. #7
    Guest

    Predefinito

    Non so se hai presente travian, più o meno così è il sistema, ad eventi pianificati, solo che non voglio utilizzare il codice per un gioco, secondo te come fanno?

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,672

    Predefinito

    ecco....

    Già un altro utente aveva questo problema e voleva fare come te.. (è una vera pazzia)

    Io suggerisco soltanto di aggiornare il tutto ogni volta che un utente visita la pagina....

    So che è difficile da capire, infatti l'altro utente ci ha badato un sacco e poi.. non so come è andata

    Ciao!

    EDIT:
    **********************************
    *-->HO RITROVATO LA DISCUSSIONE!!!<--*
    **********************************
    Ultima modifica di alemoppo : 17-05-2010 alle ore 18.35.14

  9. #9
    Guest

    Predefinito

    Sinceramente non c'avevo pensato a questa possibilità, bhe sicuramente meno dispendiosa del sistema cron o cron + reload, che farebbe aggiornare la tabella ogni secondo. Ora però mi chiedo : travian è molto preciso nei suoi conteggi, se facciamo come viene spiegato (ossia differenza timestamp÷3600 = valore da incrementare) c'è la possiblità (non tanto remota) di ottenere un numero decimale periodico, come sarebbe possibile risolvere questo problema secondo te ?

    (non è per niente difficile da capire il concetto XD)

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,672

    Predefinito

    Citazione Originalmente inviato da mhtitalia Visualizza messaggio
    Ora però mi chiedo : travian è molto preciso nei suoi conteggi, se facciamo come viene spiegato (ossia differenza timestamp÷3600 = valore da incrementare) c'è la possiblità (non tanto remota) di ottenere un numero decimale periodico, come sarebbe possibile risolvere questo problema secondo te ?
    vero, ma non ho capito perché devi dividere per 3600 {so che la c'é scritto ma...}

    Cioè:

    Quando l'utente si ricollega e/o fa qualche azione, dovrai trovare i secondi "arretrati" con:

    time() - timestamp_salvato

    E lo moltiplichi per la costante di produzione al secondo...

    ovvero:
    Codice PHP:
    $valore_arretrato = (time() - $timestamp_salvato) * $PRODUZIONE_AL_SECONDO;

    $nuovo_valore = $valore_arretrato + $valore_vecchio; //sommo le risorse che aveva prima con quelle "arretrate"
    p.s. è un esempio con le risorse, ma puoi farlo con tutto
    p.s 2: tel'ho fatto al volo (mentre sto studiando xD), quindi sicuramente c'é un modo più ottimizzato e/o migliore... Ma è solo un esempio per far capire
    Ciao!
    Ultima modifica di alemoppo : 17-05-2010 alle ore 18.55.20

  11. #11
    Guest

    Predefinito

    La divisione X 3600 si fa per ottenere un valore in ore, non facendolo si ottiene un numero di secondi, a quel punto basta semplicemente aggiornare il valore a quello che si vuole dare al secondo. Rimane però un problema : dando un valore al secondo si potrebbe avere comunque una variabile periodica che approssimerebbe senza tenere conto di nulla... È un po' come dire :
    ok io ti do 0.12121212121211212121212112
    ogni secondo
    mettiamo che sono passati 4 sec e qualcuno aggiorna la pagina...
    l'utente avrà 0,242424242 e di conseguenza l'aggiornamento mi porterà all'approsimazione che però essendo minore di 1 non mi darà un reale valore.

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,672

    Predefinito

    Scusami non ho capito:

    Codice PHP:
    $valore_arretrato = (time() - $timestamp_salvato) * $PRODUZIONE_AL_SECONDO;
    Come fa, questa riga, a dare un valore decimale?

    time() è un intero; $timestamp_salvato è un intero e produzione_al_secondo, astutamente, la farai valere un intero!

    Ciao!

  13. #13
    Guest

    Predefinito

    E se la variabile della produzione fosse un qualcosa di deciso dall'utente e dalle sue azioni ???
    Camminando per strada ho pensato :
    faccio eseguire la pagina e divido l'intero e il decimale in 2 parti esempio :
    var = 1.21
    int = 1
    float = 0.21

    Poi : l'1 lo sommo alla richiesta, il 0,21 lo metto in attesa in una seconda colonna

    Quando il sistema si ripeterà farò così

    var = 1.21
    vecchiofloat = 0.21
    tot = var + vecchio float
    int = 1
    float = 0.42
    e così via, quando raggiunge 1 lo trasferisco.

    Direi che è il massimo che posso fare al momento.

    C'è qualche funzione che mi permette di dividere la parte intera da quella decimale ora ?

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,672

    Predefinito

    ma non fai prima a fare tutto in "float" ?

    Cioè tratti tutte le cose di tipo float?!!

    Ciao!

  15. #15
    Guest

    Predefinito

    Risparmio su vasta scala, se io il numero che ottengo l'ho decimale ho necessità comunque di dividerlo in interi e non interi no ? Manca sempre la funzione che non conosco

  16. #16
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,672

    Predefinito

    beh.. guardati intval(), oppure un semplice cast ad int.

    Per il valore "minore di 1", puoi usare una cosa del genere: (provala: io non l'ho provata)

    Codice PHP:
    function decimale($valore)
    {
    return
    '0'.substr($valore,strpos($valore,'.'));
    }
    ..se non funziona, prova a sostituire '.' con ',' ma non so...

    Comunque ancora non capisco perché non puoi usare il dato direttamente in float (intero+decmale)

    EDIT: STIAMO ANDANDO SPUDORATAMENTE OFF-TOPIC!
    Ultima modifica di alemoppo : 17-05-2010 alle ore 22.06.32

  17. #17
    Guest

    Predefinito

    Giusto hai ragione, bhe, direi che ho risolto ^^ Ti ringrazio, sei stato gentilissimo ^^

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •