До настоящего времени у меня не было реальной потребности изучить удар и init сценарии, поскольку я должен в этой точке. Я создал пользовательское приложение Твиттера, которое постоянно является, или постоянно, подключено к API. Это делает задачи как загрузка профилей подписчиков, состояния и т.д. Задания крона не помогают многому для этого так, я прогрессировал для использования скелета dev140 разработчиков класс демона PHP для API Phirehose (персистентный API потоковой передачи соединения). Таким образом, я теперь подражаю небольшому количеству состояния постоянного соединения при наличии демона, делают вещи, которые являются на самом деле вызовами API ожога на нормальном (не потоковая передача API), которые иначе сделаны с заданиями крона. Демон просто читает из que таблицы в базе данных и если не пустой она знает что к к с ним. Это - идентификаторы и тип задания, и затем это идет, и выберите то, в чем я нуждаюсь, когда мне нужен он с максимум пропускная способность, я могу добраться в 15 минимальных рамочных окнах. Намного намного более устойчивый этот путь.
Я сделал следующий init сценарий для запуска этого демона PHP с php nohup от удара. Это хорошо работает (для меня, по крайней мере, быть столь хорошим, как Вы можете мне, у меня есть чувство:), но я не могу заставить демона PHP запускаться правильно, когда это - реальная начальная загрузка. Когда я ввожу sh/etc/init.d/phpdaemons, он действительно запускает php демона с nohup, это не так хорошо, как это - долбаная точка, не будучи должен сделать это вручную. Так, кто-либо? Что я - я бывший должный изучить здесь?
Tnx в усовершенствованном Daniel
Спецификации ОС после кода
#!/bin/bash
### BEGIN INIT INFO
#
# Provides: phpdaemons
# Required-Start: 2 3 4 5 6
# Required-Stop: 0 1 6
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: PHP nohup daemons initscript
# Description: This file should be placed in /etc / init d
#
### END INIT INFO#
# Fill in name of php daemon file and run as daemon
PROG="twitter_daemon_spider.php"
PROG_PATH="/home/some/domain/beta.n/lib"
PROG_ARGS=""
PID_PATH="/var/run"
## If not already running start php daemon
start() {
if [ -e "$PID_PATH/nohup php $PROG.pid" ]; then
## Program is running, exit with error.
echo "Error! $PROG is currently running!" 1>&2
exit 1
else
## Change from /dev/null to something like /var/log/$PROG if you want to save output.
nohup php $PROG_PATH/$PROG $PROG_ARGS 2>&1 >/dev/null &
echo "nohup php $PROG.pid started"
touch "$PID_PATH/nohup php $PROG.pid"
fi
}
## If runinng kill php daemon
stop() {
if [ -e "$PID_PATH/nohup php $PROG.pid" ]; then
## Program is running, so stop it
killall php $PROG
rm "$PID_PATH/nohup php $PROG.pid"
echo "$PROG stopped"
else
## Program is not running, exit with error.
echo "Error! $PROG not started!" 1>&2
exit 1
fi
}
case "$1" in
start)
start
exit 0
;;
stop)
stop
;;
reload|restart|force-reload)
stop
start
exit 0
;;
**)
echo "Usage: $0 {start|stop|reload}" 1>&2
exit 1
;;
esac
Никакие модули LSB не доступны. Идентификатор дистрибьютора: Описание Ubuntu: Ubuntu 14.04.2 Выпуск LTS: 14.04 Кодовое название: надежный человек
Чтобы заставить его работать, мы сначала должны изменить текущую рабочую папку сценария удара, который вызывает daemon.php файл как систему serice перед использованием nohup php команда. Сделать ниже работы: место в (как корень)/etc/init.d/yourscript chmod yourscript +x обновляет-rc.d yourscript значения по умолчанию 98 02, добавляет строка к rc2.d:/etc/init.d/yourscript запускаются, Альтернатива добавляют nohup php yourscript.php directlty к rc.local, но это не то же как выполнение его как системная служба как ниже.
#!/bin/bash
### BEGIN INIT INFO
#
# Provides: phpdaemons
# Required-Start: 2 3 4 5
# Required-Stop: 0 1 6
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: PHP nohup daemons initscript
# Description: This file should be placed in /etc / init d
#
### END INIT INFO#
# Fill in name of php daemon file and run as System32 Daemon /
PROG="daemon.php"
PROG_PATH="/home/some/domain/beta.nl/daemon/lib"
PROG_ARGS=""
PID_PATH="/var/run"
## If not already running start php daemon
start() {
if [ -e "$PID_PATH/nohup php $PROG.pid" ]; then
## Program is running, exit with error.
echo "Error! $PROG is currently running!" 1>&2
exit 1
else
## Change from /dev/null to something like /var/log/$PROG if you want to save output.
cd /home/some/domain/beta.nl/daemon/lib/
nohup php /home/some/domain/beta.nl/daemon/lib/daemon.php > /dev/null &
echo "nohup php $PROG.pid started"
touch "$PID_PATH/nohup php $PROG.pid"
fi
}
## If runinng kill php daemon
stop() {
if [ -e "$PID_PATH/nohup php $PROG.pid" ]; then
## Program is running, so stop it
killall php $PROG
rm "$PID_PATH/nohup php $PROG.pid"
echo "$PROG stopped"
else
## Program is not running, exit with error.
echo "Error! $PROG not started!" 1>&2
exit 1
fi
}
case "$1" in
start)
start
exit 0
;;
stop)
stop
exit 0
;;
reload|restart|force-reload)
stop
start
exit 0
;;
**)
echo "Usage: $0 {start|stop|reload}" 1>&2
exit 1
;;
esac
stop)
stop
exit 0
;;
reload|restart|force-reload)
stop
start
exit 0
;;
**)
echo "Usage: $0 {start|stop|reload}" 1>&2
exit 1
;;
esac