Страница 1 из 1

Php скрипт. Демон. Как запустить?

Добавлено: 2008-06-08 6:19:16
a.barminov
Здравствуйте!

Есть скрипт php который запускает стороннюю программу при помощи exec() в цикле while.
Сторонняя программа выводит в консоль плоды своей работы, но это не stdout.

Как запустить php скрипт, чтобы после отсоединения от консоли он продолжал выполняться? Пробовал через rc.d:

Код: Выделить всё

#!/bin/sh


# PROVIDE: phpdaemon
# KEYWORD: shutdown

phpdaemon_enable=${phpdaemon_enable-"NO"}
phpdaemon_flags=${phpdaemon_flags-""}
phpdaemon_pidfile=${phpdaemon_pidfile-"/var/run/phpdaemon.pid"}

. /etc/rc.subr

name="phpdaemon"
rcvar=`set_rcvar`
command="/home/phpdaemon.sh &"

load_rc_config $name

pidfile="${phpdaemon_pidfile}"
start_precmd="`/usr/bin/limits -e -U root`"
start_postcmd="`/usr/bin/limits -e -C daemon`"

run_rc_command "$1"
cat /home/phpdaemon.sh:

Код: Выделить всё

#!/bin/sh
/usr/local/bin/php /home/apache/while.php
Но процесс всё равно отключается.

Подскажите пожалуйста как решить проблему. Спасибо.

Чуть не забыл: команда, которая выполняется в exec() выполняется от root'а.

Re: Php скрипт. Демон. Как запустить?

Добавлено: 2008-06-08 6:51:17
zg
&

Re: Php скрипт. Демон. Как запустить?

Добавлено: 2008-06-08 6:58:44
a.barminov
zg писал(а):&
Пробовал. Отключается.

Re: Php скрипт. Демон. Как запустить?

Добавлено: 2008-06-08 8:09:23
zg

Код: Выделить всё

   Background Commands (&)
     If a command is terminated by the control operator ampersand (`&'), the
     shell executes the command asynchronously; the shell does not wait for
     the command to finish before executing the next command.

     The format for running a command in background is:

           command1 & [command2 & ...]

     If the shell is not interactive, the standard input of an asynchronous
     command is set to /dev/null.
если из консоли, то запускать надо так

Код: Выделить всё

/usr/local/bin/php /home/apache/while.php &
если скрипт должен демонизироваться, то http://ru2.php.net/manual/ru/function.pcntl-fork.php

Re: Php скрипт. Демон. Как запустить?

Добавлено: 2008-06-08 10:10:20
paradox
может
/usr/sbin/daemon
man daemon

Re: Php скрипт. Демон. Как запустить?

Добавлено: 2008-06-08 20:05:00
a.barminov
paradox писал(а):может
/usr/sbin/daemon
man daemon
Это решение подошло. Всё работает. Спасибо огромное!


Всем спасибо!!

P.S. Требую смайлик "YAHOO" в наборы смайлов

Re: Php скрипт. Демон. Как запустить?

Добавлено: 2008-06-08 21:05:35
Alex Keda
что касается амперсанда - в 4.11 оно работало - после логоффа - когда умерли родительские процессы - просесс в бакгроунде продолжал жить.
на шестёрке это уже не так - нормалное поведение когда он умирает.
редко-редко в результате каких-то глюков остаётся жить.