Я исследовал и пытался выполнить процесс демона с использованием php, я обнаружил, что вынужден перекомпилировать PHP, чтобы включить PCNTL. Тогда я начал делать некоторые тесты. Я разветвил единственный пример-сироту:
#!/usr/bin/env php
<?php
$pid = pcntl_fork();
if ($pid === -1) {
echo("Could not fork! \n");die;
} elseif ($pid) {
echo("shell root tree \n");
} else {
echo "Child process \n";
chdir("/");
fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);
$STDIN = fopen('/dev/null.txt', 'r');
$STDOUT = fopen('/dev/null.txt', 'wb');
$STDERR = fopen('/dev/null.txt', 'wb');
posix_setsid();
while(1) {
echo ".";
sleep(1);
}
}
затем я запустил скрипт:
$cd /var/www
$./test.php
все шло хорошо, файл /dev/null.txt очищался и обновлялся в бесконечном цикле каждую 1 секунду.
Затем я задумался о пользе PCNTL, поэтому изменил код:
#!/usr/bin/env php
<?php
fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);
$STDIN = fopen('/dev/null.txt', 'r');
$STDOUT = fopen('/dev/null.txt', 'wb');
$STDERR = fopen('/dev/null.txt', 'wb');
while(1) {
echo ".";
sleep(1);
}
Оба предыдущих примера дали мне одинаковые результаты. Я что-то пропустил? Можешь ли ты направить меня?