Задать вопрос
@ermolaev_nikita

Запуск демонов из под Фреймворка, что делать?

Доброго время суток, столкнулся со следующей проблемой. Для своего проекта мне надо создать PHP демона, который будет в фоновом режиме выполнять определенные операции, но я столкнулся со следующей проблемой. Если я вызываю скрипт из под Bitrix через админ панель, создается процесс (puu.sh/uvxga/13b12c7570.png) к которому не получается "Достучаться", он просто игнорирует сигналы, которые ему отправляются либо через админ панель (через командную строку PHP или же через запуск скрипта), либо из под консоли под рутом (Например Kill -SIGTERM ID), даже команда Kill не способна его убить. Запущенный же скрипт из консоли CentOS, напротив, хорошо откликается на, отправляемые, сигналы.

Код PHP демона:
<?php 
/** 
* @link 
*/ 
declare(ticks = 1); 

$stop = FALSE; 

/** 
* Функция перехватывающая сигналы 
*/ 
function sig_handler($signo) 
{ 
global $stop; 
switch ($signo) 
{ 
case SIGTERM: 
$stop = TRUE; 
break; 
case SIGUSR1: 
break; 
default: 
// Ловим все остальные сигналы 
} 
} 

// Регистрируем сигналы 
pcntl_signal(SIGTERM, "sig_handler"); 
pcntl_signal(SIGUSR1, "sig_handler"); 

// Форкаем процесс 
$pid = pcntl_fork(); 

echo $pid.PHP_EOL; 
if ($pid == -1) 
{ 
// Ошибка 
die('could not fork'.PHP_EOL); 
} 
else if ($pid) 
{ 
// Родительский процесс, убиваем 
die('die parent process'.PHP_EOL); 
} 
else 
{ 
// Новый процесс, запускаем главный цикл 
while( ! $stop ) 
{ 
sleep(1); 
pcntl_signal_dispatch(); 
// полезная работа 
} 
} 
// Отцепляемся от терминала 
?>


Запустить таким образом тоже не получается, фреймворк блокируется
exec("php -f /home/bitrix/www/bitrix/modules/test.testmodule/admin/start_furnace.php");

Получается что из под Фреймворка запустить нельзя, но как быть, ведь мне нужно запускать демонов из под админки сайта

п.с. Все статьи о демонах на хабре прочитал!
  • Вопрос задан
  • 372 просмотра
Подписаться 1 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@DiverUA
Попробуйте
exec("php -f /home/bitrix/www/bitrix/modules/test.testmodule/admin/start_furnace.php &");


Т.Е. добавьте &
И, желательно, никаких команд вывода не использовать
И закрывающий тег не нужен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽