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:
Per lanciarlo in background, questo è lo script bash che ho preparato per gestire l’avvio e la chiusura del socket PHP:
#!/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
Riferimenti:

