Задать вопрос
Driver86
@Driver86
Немодератор toster.ru

Не получается отвязаться от консоли (создаю php-демон), почему?

declare(ticks=1);
declare(strict_types=1);
require __DIR__ . '/inc/Bot.php';

$pid = pcntl_fork();
if ($pid == 0) {
    echo 'bot started';
    exit;
}

posix_setsid();

// Это для теста
sleep(10);
die();


Запускаю скрипт в консоли, введя:

php -f /var/www/prison/bot.php

Однако почему-то сначала в вывод консоли выводится текст "bot started", затем консоль ожидает 10 секунд, почему ожидает?
  • Вопрос задан
  • 498 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Nc_Soft
<?php
 
// создаем дочерний процесс
$child_pid = pcntl_fork();
 
if ($child_pid) {
    // выходим из родительского, привязанного к консоли, процесса
    exit;
}
.....
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@unet900
php разработчик ...
Я для отвязки от консоли использовал nohup незнаю насколько подойдет для ваших задач
Ответ написан
Комментировать
@ValentineK
Используйте nohup, либо screen(apt-get install screen) для этих целей
В вашем примере, закрывая консоль, вы закрываете все связанные процессы в системе с вашим сеансом.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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