Cos’è Action Scheduler
Action Scheduler è una libreria PHP per WordPress che gestisce code di lavoro asincrone. È il cuore di WooCommerce per processi come sincronizzazione stock, email transazionali, e aggiornamenti batch. A differenza di WP-Cron, Action Scheduler garantisce esecuzione, supporta retry automatici, e non blocca le richieste utente. Dal 2020 è incluso in WordPress core come parte del Background Processing.
Come Funziona
Action Scheduler memorizza le azioni nella tabella wp_actionscheduler_actions. Ogni azione ha uno status (pending, in-progress, complete, failed, cancelled) e un hook WordPress associato. L’esecuzione è guidata da una richiesta asincrona a admin-ajax.php o da WP-Cron. Il processore esegue le azioni pending in lotti controllati, evitando timeout PHP.
Programmare Azioni
as_schedule_single_action() per azioni una tantum, as_schedule_recurring_action() per ricorrenti, as_schedule_cron_action() per schedule cron-style. Ogni azione richiede un hook e un array di argomenti. Il nome univoco del gruppo (‘woocommerce’, ‘my-plugin’) permette organizzazione e gestione separata.
Processi di Lunga Durata
Per operazioni massive come esportazioni o aggiornamenti di milioni di post, Action Scheduler divide il lavoro in micro-batch. Ogni azione elabora un sottoinsieme di dati e ne programma un’altra per il prossimo lotto. Questo pattern evita timeout e memory limit. Esempio: esporta 100 utenti per azione, auto-programmando la successiva fino al completamento.
Monitoraggio e Amministrazione
Action Scheduler include un’interfaccia amministrativa sotto Strumenti > Azioni Pianificate. Mostra azioni pending, in esecuzione, completate, e fallite. Supporta ricerca, filtro per stato e gruppo, esecuzione forzata, e cancellazione. Per sistemi headless, l’API REST permette gestione programmatica. Le azioni fallite mostrano lo stack trace per debugging.
Integrazione con WP-Cron
Action Scheduler usa WP-Cron come trigger default, ma funziona meglio con cron di sistema. Configura un cron job ogni minuto per chiamare wp-cron.php. Action Scheduler processa quindi lotti fino a 25 azioni per richiesta. Il parametro ‘batch_size’ controlla quanti task eseguire per tick. Per performance massime, aumenta il batch size e riduci l’intervallo cron.
Action Scheduler in Plugin Custom
Includi Action Scheduler nel tuo plugin come dipendenza Composer: woocommerce/action-scheduler. La libreria è gratuita e standalone. Registra i tuoi hook nella funzione principale e programma azioni con as_schedule_*(). Action Scheduler gestisce automaticamente conflitti se più plugin lo usano, assicurando una singola istanza della libreria.
Conclusione
Action Scheduler è lo standard de facto per code di lavoro asincrone in WordPress. Supera WP-Cron per affidabilità, gestione errori, e capacità di processi batch. Integrarlo nei tuoi plugin permette operazioni massive senza impattare l’esperienza utente. Per qualsiasi operazione che richiede più di qualche secondo, Action Scheduler è la scelta giusta.




