Consulente ecommerce

Professionalità ed esperienza al servizio del tuo E-commerce!

magento

No public Twitter messages.





Tra tutte le attività di programmazione ci sono quelli che devono essere ripetute ad intervalli regolari. Una di queste può essere l’invio di email o newsletter, la pulizia dei log, la generazoine di sitemap e molto altro.
Come si fa in Magento a creare uno script che esegue ripetutamente (ad intervalli regolari) una funziona php?

Come in tutti i sistemi unix la risposta è CRON.
Cron è un programma che permette di eseguire ad intervalli regolari altri programmi, ma passiamo immediatamente al nostro magento.
Per prima cosa è necessario creare un modulo con la seguente configurazione:

<?xml version="1.0"?>
<config>
    <modules>
        <IacopoPecchi_Varie>
            <version>0.1.0</version>
        </IacopoPecchi_Varie>
    </modules>
    <global>
        <models>
            <varie>
                <class>IacopoPecchi_Varie_Model</class>
            </varie>
        </models>
    </global>
    <crontab>
        <jobs>
            <buoni_send>
                <schedule>
                    <cron_expr>* * * * *</cron_expr>
                </schedule>
                <run>
                    <model>varie/observer::funzioneDaRchiamare</model>
                </run>
            </buoni_send>
        </jobs>
    </crontab>
</config>

Come vedere non c’è nulla di particolare se non le impostazoini del model e quelle del cron.
Particolare importanza va data alla riga

<cron_expr>* * * * *</cron_expr>

che sta ad indicare la frequenza con la quale richiamare lo script php, o meglio la funzione funzioneDaRchiamare

Gli asterischi hanno un valore posizionale e rispettivamente significano secondi, ore, giorni, settimane, mesi ed anni. Questa tabella presa da wikipedia spiega meglio come impostare il periodo:

Entry Description Equivalent To
@yearly (or @annually) Run once a year, midnight, Jan. 1st 0 0 1 1 *
@monthly Run once a month, midnight, first of month 0 0 1 * *
@weekly Run once a week, midnight on Sunday 0 0 * * 0
@daily Run once a day, midnight 0 0 * * *
@hourly Run once an hour, beginning of hour 0 * * * *
@reboot Run at startup

Fatto questo sara necessario solamente creare il file Observer.php all’interno della directory Model del nostro modulo con il seguente contenuto:

<?php
class IacopoPecchi_Varie_Model_Observer
{

    public function funzioneDaRchiamare()
    {
        Mage::log("ciao");
    }

}
?>

Magento in questo modo è predisposto per eseguire script ad intervalli di tempo previssati. L’ultima cosa da fare è quella di richiamare il file /path_to_magento/cron.php ad intervalli regolari (tanto frenquenti quanto quelli impostati nel modulo) per fare comunicare il cron di magento con il cron di sistema linux.
Per i dettagli su come inserire uno script cron nei sistemi unix/linux potete leggere qua su wikipedia: Crontab

Altri posts


Login with Facebook:

Soluzioni POS (point of sale)

Parlare di POS (dall'inglese "Point of Sale"), significa fare riferimento ...

Ottimizzare i propri feed vers

Se avete molti feed prodotti saprete già che mantenerli ed ...

Magento Community Edition Vs M

Quando si decide di far crescere il proprio business e ...

L'evoluzione di Internet in 10

Ecco una interessante infografica che mostra come si è evoluto ...

Misurare le performance del co

In questo breve post vi mostrerò come misurare le performance ...