• User Attivo

    [crontab][guru a me!] Impostarla automaticamente?

    salve,
    nel db ho uno scadenzario di cosette da fare, con il relativo orario.
    ora con una crontab leggo periodicamente ed eseguo.
    e fin qui no problema.

    ora però le cosette da fare non sono più 2-3 al minuto ma cominciano ad essere 20, quindi mi capitano spesso sovraccarichi, perchè ovviamente la crontab me le esegue tutte insieme.

    mi chiedevo se fosse possibile con php agire sulla shell ed impostare gli orari di esecuzione con php, in modo da eseguirne magari una alle 12.02.03 secondi ed una alle 12.02.24secondi e via così..

    Se fosse possibile sarebbe comodo perchè:

    1. le operazioni sono abbastanza, ma NON sono cicliche (e quindi la distanza temporale tra 2 azioni dello stesso tipo non è mai la stessa)
    2. le operazioni non sono sempre le solite 2-3 (ma sono circa 100 e qualcuna pure pesantuccia)

    consigli?


  • Super User

    controlla il minuto nella pagina

    se decidi di dividere le operazioni in 4 gruppi controlli il resto restituito dalla divisione dei minuti per 4
    se il resto è 0 esegui il primo gruppo
    se è 1 il secondo e via dicendo.


  • User Attivo

    Altre soluzioni oltre a quella proposta da Tymba:

    1. fai un unico script dove esegui le operazioni una dopo l'altra e quindi non si sovrappongo
    2. se lasci script diversi in ognuna metti una sleep diversa (sono i secondi di attesa)

  • User Attivo

    @Tymba said:

    controlla il minuto nella pagina
    nella crontab?
    no, perchè eseguirebbe sempre il primo gruppo, visto che ogni crontab è eseguita a hh:mm:00

    non posso fare l'operazione nel refresh delle pagine dell'utente, altrimenti si inchioderebbe il server e o il database (metto il block sulle tabelle per la durata delle operazioni).
    😐


  • User Attivo

    @Senamion said:

    Altre soluzioni oltre a quella proposta da Tymba:

    1. fai un unico script dove esegui le operazioni una dopo l'altra e quindi non si sovrappongo
    2. se lasci script diversi in ognuna metti una sleep diversa (sono i secondi di attesa)

    uhm... per la 1 no problema, per la 2 pure.
    il "quid" rimane sul fatto che le operazioni non vengono eseguite in ogni minuto di ogni ora di ogni giorno, ma solo in determinati g/m/h/i specificati dal database.

    Chiedevo dell'impostazione delle crontab via shell anche perchè sarebbe inutile stressare il server in quei momenti in cui non ci sono novità dal database..


  • User Attivo

    Ecco una spiegazione di come configurare il crontab.