PHP에서 Cli_get_process_title 함수는 현재 명령 줄 프로세스의 제목을 얻는 데 사용되며, 이는 개발자가 다중 프로세스 또는 데몬 환경에서 다양한 프로세스를 구별 할 수 있도록합니다. 그러나 많은 개발자들이 사용할 때 CLI_GET_PROCESS_TITITLE 출력 garbled 코드의 문제에 직면하여 디버깅 경험에 영향을 줄뿐만 아니라 로그 정보에 혼란을 초래할 수 있습니다. 이 기사는이 문제의 일반적인 원인을 자세히 분석하고 실용적인 솔루션을 제공합니다.
cli_get_process_title은 현재 명령 줄 (CLI) 프로세스의 제목 정보를 얻는 PHP의 함수입니다. 프로세스 이름을 얻기 위해 기본 운영 체제의 인터페이스에 의존합니다. 일반적으로 쉽게 모니터링 및 관리를 위해 데몬 또는 다중 프로세스 작업에 사용됩니다.
샘플 코드 :
<?php
$title = cli_get_process_title();
echo "현재 프로세스 제목은입니다: " . $title . "\n";
?>
cli_get_process_title 출력 갈색 코드의 주된 이유는 다음 측면에서 집중됩니다.
대부분의 Linux 시스템은 기본적으로 UTF-8 인코딩을 사용하는 반면 Lang 및 LC_ALL 과 같은 일부 터미널 또는 시스템 환경 변수는 잘못 구성되어 출력 문자열이 올바르게 구문 분석 할 수 없습니다.
CLI_GET_PROCESS_TITLE 기능은 PHP 5.5 이후에 지원되었지만 다른 버전 또는 다른 PHP SAPI (예 : CLI, FPM)는이 기능에 대한 지원 수준이 다르므로 비정상적인 반환이 발생할 수 있습니다.
CLI_SET_PROCESS_TITLE을 사용하여 코드에서 제목이 설정되고 제목 문자열에 ASCII가 아닌 문자가 포함되어 있고 올바르게 인코딩되지 않으면 읽을 때 CLI_GET_PROCESS_TITLE 도 마련됩니다.
때로는 문제가 터미널 디스플레이 또는 로그 도구에 있으며 일부 문자 세트를 인식 할 수 없으며 표시되면 차량 코드가 발생합니다.
운영 체제 및 터미널이 Unified 및 UTF-8 인코딩을 사용하는지 확인하십시오.
echo $LANG
# 출력은 그대로되어야합니다 zh_CN.UTF-8
UTF-8이 아닌 경우 /etc/default/locale 또는 ~/.bashrc 에서 설정을 수정할 수 있습니다.
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
제목을 설정할 때 문자열을 UTF-8 인코딩으로 변환하십시오.
<?php
$title = "내 프로세스 제목";
cli_set_process_title(mb_convert_encoding($title, 'UTF-8', 'auto'));
?>
인코딩 및 구문 분석의 복잡성을 줄이기 위해 ASCII 범위 내의 문자를 프로세스 제목으로 사용하십시오.
cli_get_process_title이 항상 올바르게 출력 할 수없는 경우 Linux에서 PS 명령 사용과 같은 운영 체제 명령을 통해 프로세스 이름을 얻는 것을 고려하십시오.
예:
<?php
$pid = getmypid();
$cmd = "ps -p $pid -o comm=";
$processName = trim(shell_exec($cmd));
echo "현재 프로세스 이름:" . $processName . "\n";
?>
PHP 버전이 CLI_GET_PROCESS_TITLE 기능을 지원하는지 확인하고 PHP 7.X 이상으로 업그레이드하는 것이 좋습니다. 또한 운영 환경이 CLI SAPI인지 확인하십시오.
cli_get_process_title 출력 갈색 코드는 일반적으로 인코딩 환경 및 불규칙한 제목 설정의 불일치로 인해 발생합니다. 개발자는 시스템 환경이 UTF-8 인코딩인지 확인하고 프로세스 제목을 설정할 때 올바른 인코딩을 사용하고 복잡한 문자를 피해야합니다. 또한 운영 체제 명령을 사용하여 프로세스 정보를 얻는 데 도움이되는 것이 좋습니다.
<?php
// 프로세스 제목을 설정하십시오(인코딩해야합니다UTF-8)
$title = "내 프로세스 제목";
cli_set_process_title(mb_convert_encoding($title, 'UTF-8', 'auto'));
// 프로세스 제목을 얻으십시오
$processTitle = cli_get_process_title();
echo "현재 프로세스 제목:" . $processTitle . "\n";
// 만약에cli_get_process_title쓰레기 코드,대신 시스템 명령을 사용하십시오
$pid = getmypid();
$cmd = "ps -p $pid -o comm=";
$processName = trim(shell_exec($cmd));
echo "현재 프로세스 이름:" . $processName . "\n";
?>