Setting proc title on PHP based daemons is pretty sweet.
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
cli_set_process_title — Устанавливает заголовок процесса
$title
): boolУстанавливает заголовок процесса, видимое утилитами top и ps. Эта функция доступна только в режиме CLI.
title
Новое имя.
Возвращает true
в случае успешного выполнения или false
в случае возникновения ошибки.
Если команда не поддерживается вашей операционной системой, то будет
вызвана ошибка уровня E_WARNING
.
Пример #1 Пример использования cli_set_process_title()
<?php
$title = "Мой потрясающий PHP-скрипт";
$pid = getmypid(); // вы можете использовать это, чтобы увидеть заголовок процесса в ps
if (!cli_set_process_title($title)) {
echo "Не удалось установить заголовок процесса для PID $pid...\n";
exit(1);
} else {
echo "Заголовок процесса '$title' для PID $pid был установлен!\n";
sleep(5);
}
?>
In Windows, this function will set the Command Prompt window title, which is restored to the previous setting once the script finishes. If you need to do this in 5.5.X and below, you'll need to use system() to run the title command.
In Linux this command changes the title for commands like 'ps -a' it doesn't seem to work with 'top' or 'pkill'
To change the short name (eg PHP) to something else you can use the below:
<?php
$strNewName='myscript';
cli_set_process_name($strNewName);
cli_set_process_title($strNewName);
var_dump(cli_get_process_name());
var_dump(cli_get_process_title());
function cli_set_process_name($strName)
{
file_put_contents("/proc/".getmypid()."/comm",$strName);
}
function cli_get_process_name()
{
return(trim(file_get_contents("/proc/".getmypid()."/comm"),"\r\n"));
}
Note: The above will NOT work in Windows and may not work in all flavours of linux (I use Debian).
Please note that the function might be inconsistent depending on your system.
On 2 of my systems (CentOS 7.7 and Linux Mint 18.3), setting the title will work for ps but not for top.
<?php
cli_set_process_title("sleeping-daemon");
sleep(100);
/*
*ps* returns
25072 pts/2 S 0:00 sleeping-daemon
*top* returns
25072 aurelien 20 0 285848 23256 16856 S 0.0 0.3 0:00.01 php
*/