Setting proc title on PHP based daemons is pretty sweet.
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
cli_set_process_title — Définit le titre du processus
$title
): boolDéfinit le titre du processus visible avec des outils comme top et ps. Cette fonction n'est disponible qu'en mode CLI.
title
Le nouveau titre
Cette fonction retourne true
en cas de succès ou false
si une erreur survient.
Une alerte de niveau E_WARNING
sera générée si le système
sous-jacent n'est pas supporté.
Exemple #1 Exemple avec cli_set_process_title()
<?php
$title = "Mon super script PHP";
$pid = getmypid(); // vous pouvez utiliser ceci pour voir le titre de votre processus dans ps
if (!cli_set_process_title($title)) {
echo "Impossible de définir le titre du processus pour le PID $pid...\n";
exit(1);
} else {
echo "Le titre du processus '$title' pour le PID $pid a bien été défini !\n";
sleep(5);
}
?>
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
*/
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.
cli_set_process_title() change name only for some process manager in linux. In fact this function change value appear in /proc/self/cmdline and not value in /proc/self/comm. This value in comm file is used as name in #ps or #pstree and other process manager.
For changing proccess name completly in linux you could add after cli_set_process_title() this code:
$f = fopen('/proc/self/comm','w');
if ($f) { fwrite($f, 'my-new-app-name'); fclose($f);