Я пытаюсь создать простой скрипт-демон с PHP, и я хотел бы установить заголовок процесса, чтобы увидеть его в ps
а также top
выход. Этот код:
#!/usr/bin/php
<?php
// Daemonize
cli_set_process_title('daemonized');
$pid = pcntl_fork(); // parent gets the child PID, child gets 0
if($pid){ // 0 is false in PHP
// Only the parent will know the PID. Kids aren't self-aware
// Parent says goodbye!
print "Parent : " . getmypid() . " exiting\n";
exit();
}
print "Child : " . getmypid() . "\n";
while (true) {
// daemon stuff...
sleep(2);
}
Но я не могу установить заголовок, когда я запускаю скрипт, я получаю следующее предупреждение:
$ ./daemonize.php
PHP Warning: cli_set_process_title(): cli_set_process_title had an error: Not initialized correctly in /Applications/MAMP/htdocs/daemonize.php on line 3
Warning: cli_set_process_title(): cli_set_process_title had an error: Not initialized correctly in /Applications/MAMP/htdocs/daemonize.php on line 3
В чем проблема, что мне делать, чтобы она работала?
Спасибо за внимание!
Это не совсем ответ, как таковой, но я не уверен, что вы все еще можете сделать это с cli-php в OS X 10.10.x без запуска процесса от имени суперпользователя или других не столь безопасных хаков.
я пытался chmod
процесс (или, точнее, файл, который выполняется через php file.php
), chown
ввод GID в другую группу, а также запуск сценария с помощью sudo
, Все эти параметры для меня не сработали, даже несмотря на то, что процесс php выполнялся авторизованным пользователем, входящим в группу администраторов.
Мое предположение: Apple, должно быть, блокирует эту функцию по соображениям безопасности … и я полагаю, что могу себе представить, почему.
В конце концов, поскольку я ориентировался на среду выполнения Linux, я реорганизовал свой код так, чтобы cli_set_process_title()
не был критически важным и выполнил команду с оператором подавления ошибок, @cli_set_proc_title()
и просто записал тот факт, что команда не удалось.
Я бы приветствовал более полные ответы или другие безопасные обходные пути, но после большого количества потраченного времени это было лучшее, что я мог придумать, и я не смог найти другие ответы.
Надеюсь это поможет.
Других решений пока нет …