PHP: un socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS (terza parte)

php daemon

php daemon

In quest’ultimo articolo descrivo come si lancia in background lo script PHP su un server con sistema operativo Linux Ubuntu o Debian. Come vi sarete accorti lo script descritto nella seconda parte contiene nella prima riga il seguente codice:

#!/usr/bin/env php

in gergo questa sintassi si chiama Shebang e viene utilizzata per lanciare dalla shell l’interprete dello script che sta per essere eseguito. In questo caso il PHP. Sarà dunque necessario verificare che PHP5-CLI (command line interpreter) sia installato.


Se proviamo a lanciare, semplicemente digitando gpsspck.php da un terminale, questo è l’output prodotto non appena viene “agganciato” il tracker:

output di gpssock.php

output di gpssock.php

Per lanciarlo in background, questo è lo script bash che ho preparato per gestire l’avvio e la chiusura del socket PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=gpssock
PIDFILE="/var/run/${NAME}.pid"
WORKINGDIR="/path/to/gpssock/"
DAEMON="${WORKINGDIR}${NAME}.php"
DAEMONLOG="${WORKINGDIR}${NAME}.out"
 
case "$1" in
  start)
	start-stop-daemon --start  --make-pidfile --pidfile=$PIDFILE --exec $DAEMON>>$DAEMONLOG &
	;;
  restart|reload|force-reload)
	echo "Error: argument '$1' not supported" >&2
	exit 3
	;;
  stop)
	start-stop-daemon --stop --pidfile=$PIDFILE
	;;
  *)
	echo "Usage: $0 start|stop" >&2
	exit 3
	;;
esac

Lo script esegue start-stop-daemon che è un programma frequentemente utilizzato su Ubuntu per avviare e terminare i processi che funzionano come demoni. Se ne possono trovare diversi esempi nella directory /etc/init.d/ ed infatti è proprio lì che andremo a collocare il nostro script. Gli unici due settaggi da fare sono quelli di modificare, se necessario, la variabile NAME con il nome del file PHP da lanciare (nel nostro caso gpssock) e di impostare la directory di lavoro WORKINGDIR con il percorso corretto di gpssock.php
Notate che l’ultimo parametro di start-stop-daemon è & questo indica che il processo deve essere eseguito in background. Infine tutti gli output vengono rediretti in un file di log che ha lo stesso nome dello script PHP ed estensione .out

Per lanciare lo script da riga di comando:

/etc/init.d/gpssock start

Per terminare lo script da riga di comando:

/etc/init.d/gpssock stop

Se vogliamo che lo script parta all’avvio in esecuzione automatica, è necessario registrarlo con questa istruzione:

update-rc.d gpssock defaults

[Aggiornamento:] Antonino Celona fa notare che è consigliabile impostare una priorità di avvio sufficientemente alta per evitare che il socket server parta prima di MySQL server, per esempio in questo modo:

update-rc.d gpssock defaults 99

Riferimenti:

 

Questo articolo è stato pubblicato in Informatica e contrassegnato con , , , , . Aggiungi ai segnalibri il permalink.