Запустить дочерний процесс

Alexandre

PHPПенсионер
grigori спасибо, описание проекта поправил.

fixxxer спасибо, обязательно проверю твой вариант
 

fixxxer

К.О.
Партнер клуба
Поднимем тему %)

Обнаружил отсутствие pnctl_dup/pcntl_dup2. А детачиться таки хочется. Ничего лучше в голову не пришло, чем:

PHP:
        $descrs = array( 
            array('file', '/dev/null', 'r'),
            array('file', '/dev/null', 'a'), 
            array('file', '/dev/null', 'a'),
        );
        proc_close(proc_open($this->path_to_run_script_php . ' ' . $script_name, $descrs, &$pipes, NULL, $env_clone));
Полный досвидос, но работает :D

Там внутри запускаемого fork + setsid еще делается, ага. :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
>а не много ли ???
я сам не понимаю почему, но у меня скрипт при вызове sleep виден в top с потреблением CPU
 

korchasa

LIMB infected
Автор оригинала: grigori
>а не много ли ???
я сам не понимаю почему, но у меня скрипт при вызове sleep виден в top с потреблением CPU
Там почему то вызывается nanosleep вместо sleep. А это проверка таймера каждые 1/Mz.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
fixxxer,
>Полный досвидос
что бы это значило? :)

расскажи для чайников, в чем цель и необычность этого решения?

korchasa
Тогда понятно. Интересно, есть ли для этого причина.
 

fixxxer

К.О.
Партнер клуба
ну как обычно делают при демонизации - делают dup2 stdout/stderr на лог, или, если он нафиг не нужен, на /dev/null - чтобы в консоль не валилось.

а pcntl_dup2() или чего-то подобного в php нет.

так что вот, приходится юзать то, что внутри его вызывает.
 

fixxxer

К.О.
Партнер клуба
ага. и побегу рассказывать админам, что с этим патчем нужно пересобрать все пакеты и переустановить на всех серверах. и куда я пойду? :)
 
Сверху