Dans PHP, la fonction CLI_GET_PROCESS_TITLE est utilisée pour obtenir le titre du processus de ligne de commande actuel, qui facilite les développeurs pour distinguer différents processus dans des environnements multi-processus ou de démon. Cependant, de nombreux développeurs rencontreront le problème de CLI_GET_PROCESS_TITLE SORTIE CODE BRADBLEBLEMENT lors de l'utilisation, ce qui affecte non seulement l'expérience de débogage, mais peut également entraîner une confusion dans les informations du journal. Cet article analysera les causes communes de ce problème en détail et fournira des solutions pratiques.
CLI_GET_PROCESS_TITLE est une fonction de PHP qui obtient les informations de titre du processus de ligne de commande (CLI) actuel. Il s'appuie sur l'interface du système d'exploitation sous-jacent pour obtenir le nom du processus. Il est généralement utilisé dans les démons ou les tâches multi-processus pour une surveillance et une gestion faciles.
Exemple de code:
<?php
$title = cli_get_process_title();
echo "Le titre de processus actuel est: " . $title . "\n";
?>
Les principales raisons de CLI_GET_PROCESS_TITLE SORTIE Le code brouillé est concentré dans les aspects suivants:
La plupart des systèmes Linux utilisent le codage UTF-8 par défaut, tandis que certaines bornes ou variables d'environnement du système telles que Lang et LC_ALL sont mal configurées, ce qui entraîne la chaîne de sortie incapable d'être correctement analysée.
La fonction CLI_GET_PROCESS_TITLE a été prise en charge depuis PHP 5.5, mais différentes versions ou différents SAPIS PHP (tels que CLI, FPM) ont différents niveaux de support pour cette fonction, ce qui peut conduire à des rendements anormaux.
Si le titre est défini dans le code à l'aide de CLI_SET_PROCESS_TITLE , et que la chaîne de titre contient des caractères non ASCII et n'est pas codé correctement, il entraînera également un brouillage CLI_GET_PROCESS_TITLE lors de la lecture.
Parfois, le problème réside dans les affichages de terminaux ou les outils de journal, et certains jeux de caractères ne peuvent pas être reconnus, et le code brouillé se produira lorsqu'il est affiché.
Assurez-vous que le système d'exploitation et le terminal utilisent le codage unifié et UTF-8.
echo $LANG
# La sortie doit être comme zh_CN.UTF-8
Si ce n'est pas UTF-8, vous pouvez modifier les paramètres dans / etc / default / locale ou ~ / .bashrc :
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
Lors de la définition du titre, convertissez la chaîne en codage UTF-8.
<?php
$title = "Mon titre de processus";
cli_set_process_title(mb_convert_encoding($title, 'UTF-8', 'auto'));
?>
Essayez d'utiliser des caractères dans la gamme ASCII comme titres de processus pour réduire la complexité de l'encodage et de l'analyse.
Si CLI_GET_PROCESS_TITLE est toujours incapable de sortir correctement, envisagez d'obtenir le nom de processus via des commandes du système d'exploitation, telles que l'utilisation de la commande PS dans Linux.
Exemple:
<?php
$pid = getmypid();
$cmd = "ps -p $pid -o comm=";
$processName = trim(shell_exec($cmd));
echo "Nom du processus actuel:" . $processName . "\n";
?>
Confirmez que la version PHP prend en charge la fonction CLI_GET_PROCESS_TITLE , et il est recommandé de passer à PHP 7.x et supérieur. Confirmez également que l'environnement de fonctionnement est CLI SAPI.
CLI_GET_PROCESS_TITLE Sortie du code brouillé, qui est généralement causé par une non-correspondance dans l'environnement de codage et les paramètres de titre irréguliers. Les développeurs doivent s'assurer que l'environnement système est un codage UTF-8, utiliser un codage correct lors de la définition des titres de processus et essayer d'éviter les caractères complexes. De plus, l'utilisation de commandes du système d'exploitation pour aider à obtenir des informations de processus est une bonne alternative.
<?php
// Définir le titre du processus(Assurez-vous de le coderUTF-8)
$title = "Mon titre de processus";
cli_set_process_title(mb_convert_encoding($title, 'UTF-8', 'auto'));
// Obtenez le titre du processus
$processTitle = cli_get_process_title();
echo "Titre actuel du processus:" . $processTitle . "\n";
// sicli_get_process_titleCode de déchets,Utilisez des commandes système à la place
$pid = getmypid();
$cmd = "ps -p $pid -o comm=";
$processName = trim(shell_exec($cmd));
echo "Nom du processus actuel:" . $processName . "\n";
?>
PHP Document officiel: https://m66.net/manual/en/fonction.cli-get-process-title.php