Cron in PrestaShop: attività programmate fatte bene
Abbonamenti, feed di Google, sincronizzazione con l'ERP: molte cose dipendono da un cron. Ti insegniamo a configurarli perché non falliscano in silenzio.
Molte funzioni di un negozio non le avvia un cliente, ma l'orologio: addebitare i rinnovi degli abbonamenti, rigenerare il feed di Google Shopping, sincronizzare lo stock con l'ERP, pulire i carrelli. A questo servono le attività cron.
Due modi per lanciarle
Tramite URL
*/15 * * * * curl -s "https://tienda.com/module/mimodulo/cron?token=XXXX" > /dev/null
Semplice e funziona su qualsiasi hosting, ma l'attività è soggetta ai limiti del server web (tempo di esecuzione, cache di pagina, firewall).
Da riga di comando
*/15 * * * * cd /var/www/tienda && php modules/mimodulo/cron.php >> var/logs/cron-mimodulo.log 2>&1
Senza i limiti del server web e con un proprio log. È l'opzione preferibile quando c'è SSH.
Sicurezza
- Ogni URL di cron deve avere un token lungo e casuale, e verificarlo prima di fare qualsiasi cosa.
- Non mettere mai il token in un link pubblico né nel robots.txt.
- Se l'attività esegue addebiti o invia email, deve essere idempotente: eseguirla due volte non deve addebitare due volte.
Che non falliscano in silenzio
- Salva un log con data, cosa ha fatto e quanto ci ha messo.
- Salva la data dell'ultima esecuzione riuscita e mostrala nel back office del modulo.
- Avvisa (email, Telegram, Slack) se un'attività critica non viene eseguita da troppo tempo.
Frequenze ragionevoli
| Attività | Frequenza |
|---|---|
| Rinnovi degli abbonamenti | Una o più volte al giorno |
| Sincronizzazione dello stock | Ogni 5–15 minuti |
| Feed dei prodotti | Una volta al giorno |
| Pulizia dei dati | Una volta alla settimana o al mese |