Il wordpress Gpci framework integra un sistema personalizzato di gestione cron per l'esecuzione pianificata di funzioni come potrebbero essere manutenzioni, invio email basate su database, funzioni automatiche e praticamente tutto quello che potrebbe venire in mente. Questo sistema è completamente opzionale e separato dai WP-Cron, che possono sempre essere utilizzati se ritenuto necessario. La gestione del sistema dipende dal launcher e può essere azionato soltanto tramite server.
Configurare i processi cron
Per configurare un processo è necessario aggiungerlo alla configurazione $GLOBALS['gpci']['config']['php']['cron']['job'], ogni job è un array composto dalle seguenti chiavi:
id
Stringa univoca per identificare ogni processo. Se non assegnato un id il processo non sarà eseguito.
function
Funziona anonima o nome funzione che sarà eseguita dal processo. Questo parametro è obbligatorio altrimenti non sarà eseguito il processo.
conditions
Eventuali condizioni di esecuzione del processo. Se il risultato è false il processo non sarà eseguito. Utilizzare per condizioni avanzate.
hour
Eventuale ora in formato 00 - 23 (allineata con quella del sito) che sarà controllata per eseguire il processo. E' semplicemente una condizione semplificata, potrebbe essere utilizzato conditions.
minute
Minuto in formato da 00 fino a 59. Come sopra.
Esempi
$GLOBALS['gpci']['config']['php']['cron']['job'][] = [
[
'id' => 'lavoro1',
'function' => 'nome_funzione'
]
];
//processo programmato alle 09:30
$GLOBALS['gpci']['config']['php']['cron']['job'][] = [
[
'id' => 'lavoro1',
'hour' => 09,
'minute' => 30,
'function' => function(){
//istruzioni php
}
]
];
Azionare uno o più processi Cron
I processi cron possono essere azionati tramite configurazione sul server oppure tramite php. E' possibile azionare tutti i processi insieme o uno soltanto, utilizzando le condizioni o i parametri hour/minute è possibile configurare una sola chiamata ristretta (esempio ogni ora) e limitare l'esecuzione tramite i parametri (esempio un processo solo alle 10 e un altro solo alle 11). Nel risultato non cambia nulla ma se non si ha sempre accesso al server(esempio cPanel) o risulta più scomodo configurare tramite il pannello dell'hosting potrebbe essere più semplice configurare una sola chiamata e gestire tutto il resto tramite configurazione del framework.
Azionare processi cron da cPanel
Per azionare uno o più processi cron da cPanel è opportuno verificare la documentazione del servizio di hosting, ma dovrebbe essere qualcosa di molto semplice come:
- Pannello cPanel/Avanzate/Processi Cron
- aggiungere nuovo processo cron specificando l'intervallo (giorno, minuto, ecc...), scrivere nel campo comando qualcosa come:
//esegue tutti i processi cron (per sfalsarli utilizzare le condizioni temporali)
launch="cron" cron_jobs="*" sp-php /home/nome_utente/public_html/blog/wp-content/themes/gpci/php/launcher.php
//esegue un determinato processo cron
launch="cron" cron_jobs="id_job" sp-php /home/nome_utente/public_html/blog/wp-content/themes/gpci/php/launcher.php
//esegue tutti i processi cron e disabilita output ed errori (filtrarli con condizioni temporali)
launch="cron" cron_jobs="*" sp-php /home/nome_utente/public_html/blog/wp-content/themes/gpci/php/launcher.php >/dev/null 2>&1
Documentazione rilevante
Azionare processi cron da nas Synology
Per azionare uno o più processi cron da nas Synology è molto semplice, andare in:
- Pannello di controllo/utilità di pianificazione
- creare nuova attività pianificata (o azionata per farlo attivare manualmente) come Script definito dall'utente
- compilare i campi utili e in comando/Script definito dall'utente scrivere qualcosa come:
launch="cron" cron_jobs="*" /usr/local/bin/php84 /volume1/web/cartella_installazione_wordpress/wp-content/themes/gpci/php/launcher.php
Attenzione soprattutto a:
- parte iniziale del percorso (/usr/local/bin/php84): se necessario cambiare php84 con qualcosa come php83 o php85 in base alla propria versione php
- la destinazione finale (/volume1/web/cartella_installazione_wordpress/wp-content/themes/gpci/php/launcher.php) sarà ovviamente diversa, usare File station per copiare il percorso al file
Azionare processi cron tramite php
Per azionare uno o più processi cron da php è sufficiente lanciare la funzione php RunCronJobs come da esempi.
Azionare processi cron tramite richiesta remota
Per azionare uno o più processi cron tramite richiesta remota è possibile utilizzare ajax, configurare un'azione remota e poi lanciare php come visto sopra. Esempio:
