Не удается установить заголовок процесса в сценарии командной строки PHP с помощью cli_set_process_title () OS X?

Я пытаюсь создать простой скрипт-демон с 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

В чем проблема, что мне делать, чтобы она работала?

Спасибо за внимание!

1

Решение

Это не совсем ответ, как таковой, но я не уверен, что вы все еще можете сделать это с 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() и просто записал тот факт, что команда не удалось.

Я бы приветствовал более полные ответы или другие безопасные обходные пути, но после большого количества потраченного времени это было лучшее, что я мог придумать, и я не смог найти другие ответы.

Надеюсь это поможет.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]