sviluppo:itadaemon
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
sviluppo:itadaemon [2017/07/25 15:36] – f.margiotta | sviluppo:itadaemon [2024/10/15 09:45] (versione attuale) – modifica esterna 127.0.0.1 | ||
---|---|---|---|
Linea 12: | Linea 12: | ||
* **executeStop($args)** Il metodo viene eseguito una sola volta, alla distruzione del demone, ovvero quando questo viene fermato o nel caso avvenga un' | * **executeStop($args)** Il metodo viene eseguito una sola volta, alla distruzione del demone, ovvero quando questo viene fermato o nel caso avvenga un' | ||
* **getSleepTime()** questa funzione dovrà semplicemente restituire un integer che rappresenta il tempo in secondi fra un' | * **getSleepTime()** questa funzione dovrà semplicemente restituire un integer che rappresenta il tempo in secondi fra un' | ||
+ | E' inoltre possibile, ma non necessario, implementare i seguenti metodi: | ||
+ | * **checkStartPreconditions($args)** Il metodo viene eseguito una sola volta alla creazione del demone, in maniera simile ad un costruttore. | ||
+ | * **checkStopPreconditions($args)** Il metodo viene eseguito una volta prima di executeStop() | ||
**n.b.** //Un crash completo del demone (come ad esempio quello provocato da un sigkill) non porta all' | **n.b.** //Un crash completo del demone (come ad esempio quello provocato da un sigkill) non porta all' | ||
Linea 19: | Linea 22: | ||
* Ogni sezione rappresenta un demone, con il nome della sezione che deve assumere il nome del demone | * Ogni sezione rappresenta un demone, con il nome della sezione che deve assumere il nome del demone | ||
* All' | * All' | ||
+ | - //label//: Stringa di testo che rappresenta il nome esteso del demone, viene visualizzato nella console dei demoni | ||
- // | - // | ||
- | - // | + | |
+ | | ||
+ | - // | ||
+ | - // | ||
+ | < | ||
+ | label = 'Dummy daemon' | ||
+ | autostart = false | ||
+ | emailLog = CRITICAL | ||
+ | parameters[] = 1 | ||
+ | parameters[] = true | ||
+ | parameters[] = " | ||
+ | timeWarning = 180 | ||
+ | timeError = 1800 | ||
+ | </ | ||
+ | ===== Utilizzo del demone ===== | ||
+ | E' possibile lanciare e controllare un demone fondamentalmente in tre modi differenti: | ||
+ | * istanziando un oggetto di tipo itaDaemonManager e usando i metodi forniti da quest' | ||
+ | * Lanciando il file / | ||
+ | * Wrappando lo script php / | ||
+ | ==== Istanziare itaDaemonManager ==== | ||
+ | Per istanziare la classe di controllo dei demoni itaDaemonManager è sufficiente includere il file e creare un nuovo oggetto: | ||
+ | < | ||
+ | require_once ITA_BASE_PATH . '/ | ||
+ | $daemonManager = new itaDaemonManager(); | ||
+ | </ | ||
- | Per fare in modo che la coda giri come servizio, | + | Una volta creato itaDaemonManager |
- | Per creare | + | * **getDaemons()** Restituisce |
+ | * **getDaemonStatus($daemon)** Restituisce un array contenente le informazioni sul demone richiesto. Si consiglia di leggere il commento al metodo per maggiori informazioni. < | ||
+ | * **refreshDaemons()** Fa un controllo dello stato dell' | ||
+ | * **startDaemon($daemon,$args)** Avvia il demone passato con, opzionalmente, | ||
+ | * **stopDaemon($daemon,$args)** Ferma il demone passato | ||
+ | * **pauseDaemon($daemon)** Mette in pausa l' | ||
+ | * **resumeDaemon($daemon)** Permette di far ripartire un demone precedentemente messo in pausa. | ||
+ | Ogni metodo di itaDaemonManager può causare una Exception, risulta dunque opportuno usare tali metodi in un blocco try-catch. | ||
< | < | ||
- | <nome-daemon>Daemon.class.php. | + | try{ |
+ | $daemonManager-> | ||
+ | } | ||
+ | catch(ItaException $e){ | ||
+ | Out:: | ||
+ | } | ||
+ | catch(Exception $e){ | ||
+ | Out:: | ||
+ | } | ||
</ | </ | ||
+ | La console di controllo dei demoni cwbDaemonConsole sfrutta tale metodo, se necessario implementare la gestione di un demone altrove si può usare tale implementazione come esempio. | ||
- | I metodi da implementare sono: | + | **Nota:** I demoni sono gestiti in modo asincrono, l' |
- | * **executeStart**: Metodo che viene invocato ad ogni iterazione. | + | |
- | * **executeStop**: | + | |
- | * **getSleepTime**: | + | |
- | ====Configurazione==== | + | ==== Avvio tramite itaDaemonAutostart.php |
- | Oltre alla creazione | + | Risulta sufficiente impostare l' |
- | Ogni sezione del file di configurazione rappresenta un demone. | + | Lo script al suo avvio si occuperà |
- | Per ogni demone sono presenti due chiavi: | + | |
- | * **autostart** può essere impostata a true o false e indica se il demone va lanciato automaticamente dallo script /// | + | |
- | * **parameters** sono i parametri addizionali da inviare al demone, possono essere definiti più parametri usando il carattere | + | |
- | ====Servizio==== | + | Il controllo dei demoni gestiti da itaDaemonAutostart può essere fatto tramite lo script itaDaemonController.php. |
+ | In particolare lo script accetta questa sintassi: | ||
+ | php itaDaemonController.php < | ||
+ | dove comando può essere: | ||
+ | * start | ||
+ | * stop | ||
+ | * pause | ||
+ | * resume | ||
+ | * status | ||
+ | Inoltre se al posto del nome del demone verrà passata la string all il comando verrà eseguito per tutti i demoni (utile per avere lo status di tutti i demoni presenti, avviarli o fermarli tutti, etc). Esempio: php itaDaemonController.php all start | ||
+ | **Nota:** C'è possibilità di interscambio dei metodi di controllo, risulterà dunque possibile controllare tramite la classe itaDaemonManager un demone lanciato tramite itaDaemonAutostart e viceversa. | ||
+ | |||
+ | ==== Wrap dello script itaDaemonExecutor.php in un demone (Linux) ==== | ||
+ | E' possibile wrappare un demone usando itaDaemonExecutor.php all' | ||
Centos7: creazione di un nuovo script (/ | Centos7: creazione di un nuovo script (/ | ||
Linea 69: | Linea 120: | ||
php / | php / | ||
</ | </ | ||
+ | |||
+ | ==== Wrap dello script itaDaemonExecutor.php in un servizio (Windows) ==== | ||
+ | {{ : | ||
+ | In maniera analoga a quanto fatto per linux è possibile procedere alla registrazione di un servizio Windows usando NSSM per wrappare lo script itaDaemonExecutor.php < | ||
+ | |||
+ | **Nota:** A differenza che per i metodi precedenti il wrap dello script php in un demone/ | ||
+ | |||
+ | **Nota:** Il modo più robusto e compatibile per lanciare e gestire i demoni di itaEngine è effettuare il wrap di itaDaemonAutostart.php in un demone/ | ||
+ |
sviluppo/itadaemon.1500996962.txt.gz · Ultima modifica: 2018/03/19 10:45 (modifica esterna)