Questa è una vecchia versione del documento!
Indice
Utilizzo e sviluppo dei demoni con itaDaemon
E' stata sviluppata in itaEngine un'infrastruttura che permette l'esecuzione di script in maniera continuativa simulando il comportamento di un demone Linux o di un servizio Windows.
Creazione di un demone
Per creare un nuovo demone è necessario creare una nuova classe che estende la classe itaBaseDaemon ed impostare di conseguenza il file di configurazione dei demoni posto sotto /daemon/config/autostart.ini
Creazione della classe *Daemon.class.php
Per creare un nuovo demone è necessario creare una classe che estende itaBaseDaemon. Tale classe deve avere come nome “<nome_demone>Daemon.class.php” ed essere inserita nel percorso “/daemon/daemons/*Daemon.class.php”. La classe deve implementare tre metodi:
- executeStart($args) Il metodo viene eseguito ad ogni ciclo di esecuzione del demone
- executeStop($args) Il metodo viene eseguito una sola volta, alla distruzione del demone, ovvero quando questo viene fermato o nel caso avvenga un'eccezione.
- getSleepTime() questa funzione dovrà semplicemente restituire un integer che rappresenta il tempo in secondi fra un'esecuzione di executeStart e la successiva.
n.b. Un crash completo del demone (come ad esempio quello provocato da un sigkill) non porta all'esecuzione di executeStop.
Configurazione del file autostart.ini
Oltre alla creazione della classe è necessario registrare il nuovo demone all'interno del file di configurazione “/daemon/config/autostart.ini” Il file di configurazione è strutturato in questo modo:
- Ogni sezione rappresenta un demone, con il nome della sezione che deve assumere il nome del demone
- All'interno di ogni sezione sono presenti due parametri:
- autostart: può assumere valore true o false ed indica se il demone parte automaticamente all'avvio del servizio di gestione
- parameters: sono parametri aggiuntivi che vengono passati sia alla creazione che alla distruzione del demone. E' possibile passare più parametri dividendoli dal carattere di pipe ( | )
Per fare in modo che la coda giri come servizio, è opportuno scrivere un apposito daemon e registrarlo nel sistema come servizio. Per creare un nuovo daemon, basta semplicemente creare una nuova classe in /daemon/daemons/ con la seguente nomenclatura:
<nome-daemon>Daemon.class.php.
I metodi da implementare sono:
- executeStart: Metodo che viene invocato ad ogni iterazione.
- executeStop: Metodo che viene invocato allo stop del servizio.
- getSleepTime: Restituisce il numero di secondi di inattività tra un'iterazione e l'altra.
Configurazione
Oltre alla creazione del demone sotto forma di classe PHP risulta necessario inserire il demone appena creato nel file di configurazione /daemon/config/autostart.ini Ogni sezione del file di configurazione rappresenta un demone. 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 /daemon/itaDaemonAutostart.php
- parameters sono i parametri addizionali da inviare al demone, possono essere definiti più parametri usando il carattere di pipe | come divisore.
Servizio
Centos7: creazione di un nuovo script (/etc/systemd/system/testphp.service):
After=network.target [Service] Type=forking User=root ExecStart=/bin/bash /vagrant/system/start-daemon.sh par1 par2 ExecStop=/bin/bash /vagrant/system/stop-daemon.sh [Install] WantedBy=multi-user.target
start-daemon.sh:
php /vagrant/itaEngine/daemon/itaDaemonExecutor.php dummy start $1 $2 &
stop-daemon.sh:
php /vagrant/itaEngine/daemon/itaDaemonExecutor.php dummy stop