Strumenti Utente

Strumenti Sito


sviluppo:itadaemon

Questa è una vecchia versione del documento!


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:
  1. autostart: può assumere valore true o false ed indica se il demone parte automaticamente all'avvio del servizio di gestione
  2. 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
sviluppo/itadaemon.1500996962.txt.gz · Ultima modifica: 2018/03/19 10:45 (modifica esterna)