Vuoi imparare ad utilizzare Magento? Scopri il primo Video Corso Completo su Magento Scopri di più

Come configurare il Cron Job in Magento

In Magento alcune operazioni devono essere eseguite periodicamente per permettere di eseguire delle funzioni in modo automatico. Questo è possibile grazie ai Cron Job. Cos’è un Cron Job Un Cron è un’operazione che viene eseguita in automatico ad intervalli di tempo regolari. I Cron aiutano i proprietari di negozi nel pianificare comandi che si svolgeranno […]

Cron Magento
4.75/5 (4)

In Magento alcune operazioni devono essere eseguite periodicamente per permettere di eseguire delle funzioni in modo automatico. Questo è possibile grazie ai Cron Job.

Cos’è un Cron Job

Un Cron è un’operazione che viene eseguita in automatico ad intervalli di tempo regolari. I Cron aiutano i proprietari di negozi nel pianificare comandi che si svolgeranno periodicamente alla data e ora impostata.

In Magento alcune operazioni devono essere eseguite periodicamente. Alcune di queste sono:

  • Regole dei prezzi del Catalogo
  • Invio di Newsletter
  • Generazione della Sitemap XML (Leggi l’articolo su come creare una sitemap XML)
  • Notifiche / Alert per i clienti (cambiamenti di prezzo, prodotti di nuovo in stock)
  • Aggiornamento automatico delle Valute (Currency)
  • Pulizia automatica dei log nel Database

1) Configurazione del Cron

Tramite SSH

Per impostare il cronjob tramite ssh, usa il comando crontab -e. Per eseguire il cron giornalmente, aggiungi una linea come questa:

* * * * * /bin/sh /var/www/vhosts/sitoweb.com/httpdocs/cron.sh

Il codice indicato eseguirà i cron ogni 5 minuti.

Se hai bisogno di maggiori informazioni sulla Shell di Linux e SSH, Questa guida potrebbe esserti utile: SSH per principianti

Tramite Pannello Plesk o Cpanel

Per creare un cronjob specifico che farà eseguire i Cron di Magento (ogni 5 minuti), accedi al tuo web hosting panel (esempio Plesk o Cpanel) e crea un nuovo Cron, o Scheduled Tasc seguendo questi parametri:

  • Minute: *
  • Hour: *
  • Day of the Month: *
  • Month: *
  • Day of the Week: *
  • Command: php -q /var/www/vhosts/sitoweb.com/httpdocs/cron.php

Risultato:

 * * * * php -q /var/www/vhosts/sitoweb.com/httpdocs/cron.php

NB: Cambia php -q /var/www/vhosts/sitoweb.com/httpdocs/cron.php con il percorso assoluto della tua installazione Magento

Durante l’impostazione di un cron-job assicurati che l’intervallo di tempo tra un esecuzione e l’altra sia almeno di 15 minuti (non meno di questo) per non rischiare di sovraccaricare la memoria e bloccare il sito.

Ad esempio Magento spende circa 1 minuto per l’indice 1000 prodotti e imposta lo stato “successo” da “In attesa”.

2) Impostare il Cron dall’admin di Magento

Ora che abbiamo impostato l’esecuzione automatica delle operazioni elencate prima in Magento, possiamo accedere a delle configurazioni avanzata nella pagina di configurazione del cron.

Apri quindi il pannello di amministrazione del tuo store Magento e vai in Sistema => Configurazione => Sistema => ‘(Operazioni pianificate) Cron’ tab.

Come Puoi vedere ci sono dei valori già impostati di default.

Cron Magento

NB: tutti i tempi sono in minuti.

Impostazioni ottimali per i Cron Magento e Best Practices

Secondo la mia esperienza, è meglio cambiare questi valori con i valori che indico di seguito:

  • Genera programma ogni volta: 60
    (inserire il periodo di esecuzione, in questo caso 5 minuti – è lo stesso numero che avete inserito nel crontabs:*/5 * * * php -q /var/www/vhosts/sitoweb.com/httpdocs/cron.php )
  • Programma prima per: 1Errato se non eseguito entro: 60
    E’ il tempo oltre il quale un cron viene interrotto. In questo caso dopo 60 minuti di attività, se il processo non è completato, il sistema lo blocca e lo segnala come errato.
  • Pulisci la cronologia ogni volta: 120
    Quest’opzione determina il tempo di pulizia della cronologia dei cron. In questo caso, ogni 2 ore.
  • Cronologia totale eseguita con successo: 120
  • Cronologia completa fallita: 120

Ti è piaciuto questo articolo? Votalo!

  • Seguendo la guida non mi invia la newsletter e non mi arrivano le emial a ordine effettauto

  • Il cron job ogni 5 minuti è devastante per le vendite. Va messo a 1 minuto. Le email relative agli ordini devono arrivare il prima possibile agli utenti, se non mi arriva una mail di un ordine entro 2/3 minuti l’utente ha già in mano il mouse per chiedere assistenza. Inoltre con il cron job ogni minuto non si rischia di “far perdere il giro” ad alcuni cron e si evita il sovrapporsi di attività.

    • Grazie Simone per la tua segnalazione, aggiorniamo il post.

  • Maurizio

    L’esempio in cima all’articolo è sbagliato:
    “`
    [php]*/5 3 * * * /bin/sh /var/www/vhosts/sitoweb.com/httpdocs/cron.sh[/php]

    Il codice indicato eseguirà i cron ogni 5 minuti.
    “`

    Intanto [php] e [/php] non ci vanno (credo siano formattazioni per la visualizzazione di questa pagina).
    E poi */5 3 * * * eseguirebbe lo script ogni 5 minuti ma dalle 3.00 alle 3.59 di ogni mattina.

    • Grazie per le segnalazioni, abbiamo aggiornato il post. Buona giornata!

      • Maurizio

        Efficientissimi! 🙂

        • Sempre pronti! 🙂

          *Andrea Saccà*

          2016-10-24 10:15 GMT+02:00 Disqus :

  • Livio Lee Siano

    Ciao, io avrei bisogno di impostare l’importazione dei prodotti tramite csv una volta a notte. come posso fare ?

  • Credo che ci sia un errore dove spiegate le best practice, al primo punto avete messo Genera programma ogni volta: 60

    ma poi specificate di mettere 5… si tratta di un refuso?

  • Natalie

    Hey,
    Se qualcuno ha bisogno di posti di lavoro più potenti e frequenti eseguire cron, https: //www.easycron.com è buon complemento.

Magento è un marchio registrato di Magento Inc. MagenTiamo è un progetto indipendente non affiliato direttamente dal progetto Magento o chi ne detiene il trademark.