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.8/5 (5)

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!

Vuoi imparare meglio Magento?

Abbiamo preparato per te un Video corso di oltre 20h di formazione: dall'installazione alla configurazione. Dalla gestione prodotti, alla SEO on page, marketing e molto altro ancora!

Impara in fretta come creare e gestire un e-commerce con Magento, con l'esperienza degli esperti Magento.

Scopri di più

  • 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.