php에서 proc_nice ()는 현재 프로세스 우선 순위를 수정하는 데 사용되는 함수입니다. 백그라운드 작업, 배치 스크립트 또는 리소스 집약적 인 작업과 같은 시스템 리소스 점유량의 양을 조절하여 CPU에 대한 현재 스크립트의 경쟁력을 줄여 전체 시스템 응답을 향상시킬 필요가있을 때 유용 할 수 있습니다.
그러나 Proc_nice () 함수의 일반적인 문제는 오류나 예외를 던지지 않고 부울 값을 반환한다는 것입니다. 즉, 프로세스의 "우선 순위"(실제로 "우선 순위 바이어스")가 성공적으로 설정되었는지 확인하려면 반환 값을 명시 적으로 확인해야합니다.
Proc_nice () 는 정수 유형 매개 변수 $ 증가를 수신하여 현재 우선 순위에 따라 오프셋 값을 나타냅니다. 값이 클수록 우선 순위가 낮습니다 (즉, 더 "좋은"). 값이 작을수록 우선 순위가 높을수록 우선 순위가 높습니다 (즉, "긴급한").
<?php
$success = proc_nice(10);
if ($success) {
echo "프로세스 우선 순위가 성공적으로 설정되었습니다。\n";
} else {
echo "프로세스 우선 순위를 설정하지 못했습니다,권한이 충분하지 않을 수 있습니다。\n";
}
?>
Proc_nice ()는 설정이 실패했음을 나타 내기 위해 False를 반환합니다. 실패의 주된 이유는 일반적으로 다음과 같습니다.
불충분 한 권한 <br> Linux 시스템에서는 루트 사용자 만 프로세스의 좋은 값을 낮출 수 있습니다 (즉, 음수 값과 같은 우선 순위 증가). 일반 사용자는 ( "더 친근 해지는"경우에만 켜질 수 있습니다.
플랫폼 제한 <br> 일부 비 유닉스와 같은 시스템 (예 : Windows)에서 Proc_nice ()는 지원되지 않거나 일관되지 않게 작동 할 수 있습니다.
PHP는 현재 프로세스의 좋은 값을 직접 얻을 수있는 내장 기능이 없지만 Shell_Exec () 호출하여 시스템 명령을 실행하여 구현할 수 있습니다.
<?php
$currentNice = (int) shell_exec('ps -o ni= -p ' . getmypid());
echo "현재의 nice 가치는입니다:$currentNice\n";
?>
이 코드는 PS 명령을 통해 현재 PHP 프로세스의 훌륭한 값을 쿼리합니다. 여기서 getMypid ()는 현재 프로세스의 PID를 가져옵니다.
?? 참고 :이 메소드는 시스템 명령에 따라 달라지며 disabled_functions 또는 open_basedir 제한된 환경에서 사용할 수 없습니다.
Proc_nice () 를보다 강력하게 사용하려면 오류 로깅 및 권한 점검을 사용하는 것이 좋습니다.
<?php
$desiredNice = -5;
if (!function_exists('proc_nice')) {
error_log("proc_nice 기능을 사용할 수 없습니다,확인하십시오 PHP 환경 구성。");
exit("proc_nice 사용할 수 없습니다\n");
}
if (!posix_geteuid()) {
echo "현재의是 root 사용자,더 높은 우선 순위를 설정할 수 있습니다。\n";
} else {
echo "현재의非 root 사용자,음수 값을 설정할 수 없습니다 nice 값。\n";
}
if (proc_nice($desiredNice)) {
echo "우선 순위를 성공적으로 오프셋하도록 설정하십시오 $desiredNice。\n";
} else {
echo "설정이 실패했습니다,권한이 충분하지 않거나 시스템 제한이있을 수 있습니다.。\n";
error_log("proc_nice 실패하다,설정해보십시오 $desiredNice 거부。");
}
?>
위의 코드에서는 문제 위치를 용이하게하기 위해 기능 가용성, 현재 사용자 신원의 판단 및 적절한 로깅이 추가됩니다.
Proc_nice () 는 유용하지만 쉽게 간과되는 기능입니다. 동작과 권한이 밀접하게 관련되어 있으므로 반환 값을 올바르게 처리하고 로깅을 기록해야합니다. 자동화 된 환경 또는 서비스에 사용되는 경우 배포 전에 https://gitbox.net/tools/php-nice-check 와 같은 도구를 사용하여 우선 순위 제어가 예상대로 작동하도록하는 것이 좋습니다.
Proc_nice () 를 올바르게 사용하면 PHP 프로그램이 시스템과 더 부드럽게 공존 할 수 있습니다.