Skip to content

Instantly share code, notes, and snippets.

@bramus
Created November 11, 2013 11:23
Show Gist options
  • Star 45 You must be signed in to star a gist
  • Fork 17 You must be signed in to fork a gist
  • Save bramus/7411782 to your computer and use it in GitHub Desktop.
Save bramus/7411782 to your computer and use it in GitHub Desktop.
Running a PHP script as a service/daemon using `start-stop-daemon`
#! /bin/sh
# Installation
# - Move this to /etc/init.d/myservice
# - chmod +x this
#
# Starting and stopping
# - Start: `service myservice start` or `/etc/init.d/myservice start`
# - Stop: `service myservice stop` or `/etc/init.d/myservice stop`
#ref http://till.klampaeckel.de/blog/archives/94-start-stop-daemon,-Gearman-and-a-little-PHP.html
#ref http://unix.stackexchange.com/questions/85033/use-start-stop-daemon-for-a-php-server/85570#85570
#ref http://serverfault.com/questions/229759/launching-a-php-daemon-from-an-lsb-init-script-w-start-stop-daemon
NAME=myservice
DESC="Daemon for my magnificent PHP CLI script"
PIDFILE="/var/run/${NAME}.pid"
LOGFILE="/var/log/${NAME}.log"
DAEMON="/usr/bin/php"
DAEMON_OPTS="/path/to/your/php/script.php"
START_OPTS="--start --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON} ${DAEMON_OPTS}"
STOP_OPTS="--stop --pidfile ${PIDFILE}"
test -x $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting ${DESC}: "
start-stop-daemon $START_OPTS >> $LOGFILE
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon $STOP_OPTS
echo "$NAME."
rm -f $PIDFILE
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon $STOP_OPTS
sleep 1
start-stop-daemon $START_OPTS >> $LOGFILE
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
@imaimai86
Copy link

Are you using this daemon?

When I run the php script as using following command it writes outputs to terminal, but when I run this using daemon, its not writing the output to the log file.
/usr/bin/php /path/to/php/file
but when i run the daemon, its not writing anything to the log file

Any idea?

@pacobnt
Copy link

pacobnt commented Dec 13, 2019

imaimai86 problem with permissions

@Doopin
Copy link

Doopin commented Jun 3, 2021

The code below worked for me.
`[Unit]
Description=Start PHP CometPOS Websocket
Server After=network.target

[Service]
Type=simple
User=root
ExecStart=/opt/cpanel/ea-php73/root/bin/php /home/admin/public_html/cometpos.com/login/pos/ws/bin/my-webservices.php
Restart=on-abort

[Install]
WantedBy=multi-user.target`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment