Используя Выскочку / init с демоном PHP nohup php daemon.php

До настоящего времени у меня не было реальной потребности изучить удар и 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 Кодовое название: надежный человек

1
задан 3 July 2015 в 23:14

1 ответ

Чтобы заставить его работать, мы сначала должны изменить текущую рабочую папку сценария удара, который вызывает 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
0
ответ дан 4 October 2019 в 01:25

Другие вопросы по тегам:

Похожие вопросы: