Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    trovare quando eseguire un cron

    ciao,sto sviluppando un applicazione php dove un utente inserisce un processo da eseguire con una sintassi cron:
    i 5 caratteri per spiegarci * * * * * (ogni minuto) */5 * * * * (ogni 5 minuti) ecc....
    io vorrei eseguire con un cron che richiama uno script php ogni 5 min tutti i cron precedenti alla data corrente.
    mi spiego meglio : ho trovato una classe su phpclasses che fa il pharsing della sintassi cron e ritorna una data precedente del cron che sarebbe dovuto essere eseguito subito prima e una data successiva a quando va eseguito il cron successivo.
    non riesco a capire come eseguire tutti i cron precedenti se sono gia passati piu di una volta.
    ho pensato di inserire una data cron eseguito il...... ma ho le idee poco chiare.
    voi come fareste?
    scusate se non ho espresso bene la domanda, chiedetemi dove non mi sono espresso bene.
    ciao.

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    189
    La linea di fondo è che il cron verrà azionato da qualcosa (se il tuo sistema impone limitazioni e dunque non è permesso la funzione exec, non esiste il cron nativo php, ma probabilmente se l'utente visualizza il sito "può" innescare manualmente il cron, oppure cron esterno a php tramite servizio offerto dalla tua compagnia di hosting solitamente abbinato con una quota puoi scegliere a quale percorso e con quale frequenza farlo).
    Sul come dipende dalla sintassi della classe da te utilizzata (la classe possiede proprietà, metodi e può ereditare da altro codice "compreso un'altra classe").
    Devi gestire tra intervallo temporale e che quindi per trasformare dovrai utilizzare l'oggetto DateTime se non è direttamente una cifra numerica Unix Time oppure tramite altre funzioni php native.
    Ora effettua questa distinzione, pensa al tuo orologio da parete sei tu che puoi anche avanzare o indietreggiare l'orario e il concetto può anche esplicarsi in php per qualche vecchio sistema operativo o non adeguatamente supportato o non configurato come richiede php.
    Codice PHP:
    $unix_time time(); //secondi attuali dall'epoca del tempo unix, la data arbitraria o iniziale è 1970-01-01 00:00:00 UTC
    $oggetto = new DateTime('2021-01-01 01:00:00.000000 Europe/Rome'); //Data 2021-01-01 01:00:00 con fuso orario per l'Italia
    var_dump($oggetto->format('U')); //stringa dei secondi memorizzato dentro la variabile $oggetto, che è comunque  tempo unix e che quindi implicitamente effettua la conversione da un fuso orario a UTC 
    più o meno è la base per gestire una data con php.
    Mentre se è possibile usare la shell (tramite la funzione exec di php) https://code.tutsplus.com/tutorials/...php--net-19428
    Ultima modifica di darbula; 15-01-2022 a 22:23

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grazie darbula , come avrai capito sto cercando di implementare un sistema in cui l'utente può inserire delle azioni da svolgere in certi tempi.
    ho capito tutto quelllo che hai detto , e conosco php il mio problema principale alla fine te lo riassumo in questo:
    1)se i cron fossero una volta al giorno non ci sarebbe problema , ho la classe che mi traduce in un datetime il cron che l'utente inserisce e svolgo l'azione quando con un cron impostato ogni 5 o 2 min il datetime last è > di now
    2)Il problema arriva quando ho dei cron ripetuti nel tempo ossia una volta ogni ora ad es. come faccio a sapere se ho gia eseguiito il cron ? o se lo eseguo due volte ? per questo ho pensato ad un campo ultima esecuzione oltre al cron.non sarà visibile all utente nel backend o dove inserisce i cron ma lo aggiornerò quando ho eseguito l'azione.
    su questo ho qualhe dubbio.
    altro problema è il tempo di esecuzione , penso che debba essere breve altrimenti molti server ti bloccano il processo , o penso.
    Alla fine la cosa piu semplice come hai detto sarebbe la funzione exec ed è relativa al tipo di server he ti puoi permettere.
    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.