Supporto » Funzionalità = Plugin » [SOLVED] Eseguire un cron ad una certa data

  • dario

    (@dariomarco)


    Salve a tutti ho uno script che esegue un cron job, che ho infilato in un plugin, questo appena lo attivo manda una mail che manderà ogni ora al mio indirizzo mail.
    Vorrei però che il cron partisse ad esempio il sabato alle 16, ma nonostante tramuto la data in umtc lo script non parte (ovviamente la data la posticipo di dieci minuti per fare una prova).
    Questo è lo script che ho sotto mano.

    [code]
    function my_schedule_activation() {
    // esempio di data posticipata che avrei potuto sostituire con ('next friday 16:00:00')
    wp_schedule_event(strtotime('2016-02-16 00:45:00'),'hourly','my_hourly_event');
    }

    function my_schedule_deactivation() {
    wp_clear_scheduled_hook('my_hourly_event');
    }

    function my_do_this_hourly() {
    wp_mail('mipiace@gmail.com','The subject','The message');
    }

    add_action('my_hourly_event','my_do_this_hourly');

    register_activation_hook (__FILE__,'my_schedule_activation');
    register_deactivation_hook(__FILE__,'my_schedule_deactivation');

    [/code]
    Grazie in anticipo per l’aiuto.

Stai visualizzando 6 risposte - dal 1 al 6 (di 6 totali)
  • Moderatore Cristiano Zanca

    (@cristianozanca)

    Ciao @dariomarco,

    come ti diceva @wido nella domanda precedente:

    Attenzione ai plugins che usano WP_Cron e non il cronjob di sistema perchè per i primi l’esecuzione è legata alle visite degli utenti.

    evitiamo se possibile di ripetere più volte le stesse domande.

    Grazie 🙂

    Chi ha creato la discussione dario

    (@dariomarco)

    ciao cristiano, come puoi leggere dal 3d sto parlando di uno script che ho fatto io manulamente e non di un plugin, sono due argomenti a se stanti, qui si parla di uno script in php.

    Moderatore Guido Scialfa

    (@wido)

    Io non ho mai usato lo schedule in quel modo ma il primo parametro di wp_schedule_event è così descritto nel codex:

    The first time that you want the event to occur. This must be in a UNIX timestamp format.

    Teoricamente dovrebbe partire oggi 16 Febbraio 2016 alle 00:45.

    Non so però se si crei qualche problema visto che tecnicamente alle 00:45 siamo al 17 febbraio.

    Moderatore Cristiano Zanca

    (@cristianozanca)

    Perdonatemi entrambi @guido e @dariomarco,

    A me questo sembra indicare che fino a che un utente non va sul sito il cron non parte:

    Description

    Schedules a hook which will be executed by the WordPress actions core on a specific interval, specified by you. The action will trigger when someone visits your WordPress site, if the scheduled time has passed. See the Plugin API for a list of hooks.

    
    <?php wp_schedule_event(time(), 'hourly', 'my_schedule_hook', $args); ?>
    

    https://codex.wordpress.org/Function_Reference/wp_schedule_event

    E come diceva giustamente @guido, si può fare solo lato server un cron che agisce indipendentemente dal fatto che un visitatore passi da sito.

    Nessun codice php parte da solo, o sbaglio? 🙂

    Moderatore Guido Scialfa

    (@wido)

    @cristianozanca, si rimane quanto detto anche precedentemente, se si vuole schedulare dei jobs reali bisogna sempre prevedere di farlo lato server con i cron di sistema.

    Io mi riferivo al fatto che comunque non gli sarebbe partito prima l’evento perchè lo aveva creato per essere eseguito nel futuro quindi anche volendo andare a fare una richiesta al sito non sarebbe partito comunque il cron.

    Chi ha creato la discussione dario

    (@dariomarco)

    Grazie a tutti per le risposte, sono riuscito a risolvere.
    Diciamo che per fortuna il mio sito viene visitato sempre durante l’arco della giornata, il mio problema era che il cron agiva sempre un’ora esatta dopo la programmazione, così ho scoperto che il server del mio provider non ha il fuso orario italiano, quindi, il mio script è corretto ma bisogna aggiungere questa stringa:

    date_default_timezone_set(‘Europe/Rome’);

    Non tutti i server necessitano di questo comando.

Stai visualizzando 6 risposte - dal 1 al 6 (di 6 totali)
  • Il topic ‘[SOLVED] Eseguire un cron ad una certa data’ è chiuso a nuove risposte.