PHP 응용 프로그램을 개발하고 배포 할 때 Docker 컨테이너에서 PHP 환경이 실행되는지 여부를 알면 타겟팅 된 최적화 및 조정에 도움이 될 수 있습니다. 일반적으로 컨테이너화 된 환경은 고립 된 런타임 환경을 제공하므로 경우에 따라 PHP가 Docker 컨테이너에서 실행 중인지 확인해야합니다.
이 기사는 PHP의 php_uname () 함수를 사용하여 PHP가 Docker 컨테이너에서 실행 중인지 여부를 결정하는 방법을 소개합니다.
PHP_UNAME () 는 UNIX 시스템의 UNAM 명령과 유사한 시스템 정보를 반환하는 데 주로 사용되는 PHP의 내장 기능입니다. 운영 체제 이름, 호스트 이름, 버전 및 현재 시스템의 기타 정보를 반환합니다.
함수의 기본 사용은 다음과 같습니다.
php_uname();
운영 체제에 따라 다음과 유사한 문자열을 반환합니다.
Linux myhostname 4.15.0-45-generic #48-Ubuntu SMP Thu Jan 17 16:24:23 UTC 2019 x86_64
이 문자열에는 운영 체제 유형, 호스트 이름, 커널 버전 등과 같은 정보가 포함됩니다.
Docker 컨테이너는 일반적으로 특정 커널 버전을 사용하며 컨테이너의 /Proc/1/CGroup 파일에는 Docker 관련 정보가 포함되어 있습니다. 따라서 PHP가 php_uname ()을 사용하여 Docker에 있는지 직접 판단하는 것은 쉽지 않습니다. 그러나 우리는 시스템 파일을 결합하여 판단 할 수 있습니다.
php_uname () 출력을 봅니다
먼저, php_uname ()을 사용하여 운영 체제 정보를 출력합니다.
echo php_uname();
다음과 유사한 출력을 얻을 수 있습니다.
Linux myhostname 5.4.0-100-generic #113-Ubuntu SMP Wed Nov 25 13:02:28 UTC 2020 x86_64
이것은 PHP가 Docker에서 실행 중인지 직접 알려주지 않습니다. 추가 확인을 위해서는 Docker 컨테이너의 특성을 확인해야합니다.
/proc/1/cgroup 파일과 결합
Docker 컨테이너의 파일 시스템에는 일반적으로 /proc/1/cgroup 파일이 포함되어 있으며이 파일에서 Docker 컨테이너와 관련된 정보를 찾을 수 있습니다. 파일의 내용을 감지하여 파일 내용이 Docker 환경에서 실행 중인지 여부를 추론 할 수 있습니다.
다음 코드를 사용하여 확인할 수 있습니다.
function isRunningInDocker() {
// 존재하는지 확인하십시오 /proc/1/cgroup 문서
if (is_readable('/proc/1/cgroup')) {
$cgroup = file_get_contents('/proc/1/cgroup');
// 포함 여부를 결정하십시오 docker 로고
if (strpos($cgroup, 'docker') !== false) {
return true; // 실행 Docker 가운데
}
}
return false; // 未실행 Docker 가운데
}
if (isRunningInDocker()) {
echo "PHP 진행 중 Docker 容器가운데运行!";
} else {
echo "PHP 没有실행 Docker 容器가운데。";
}
코드는 /proc/1/cgroup 파일을 확인하고 docker- 관련 태그가 있는지 여부를 찾습니다.
파일에 Docker 식별 문자열이 포함 된 경우 PHP가 Docker 컨테이너에서 실행 중인지 확인할 수 있습니다.
<?php
// 사용 php_uname() 운영 체제 정보를 얻으십시오
echo '운영 체제 정보: ' . php_uname() . "\n";
// 있는지 확인하십시오 Docker 容器가운데运行
function isRunningInDocker() {
if (is_readable('/proc/1/cgroup')) {
$cgroup = file_get_contents('/proc/1/cgroup');
if (strpos($cgroup, 'docker') !== false) {
return true; // 예 Docker 환경
}
}
return false; // 不예 Docker 환경
}
if (isRunningInDocker()) {
echo "PHP 진행 중 Docker 容器가운데运行!";
} else {
echo "PHP 没有실행 Docker 容器가운데。";
}
?>
위의 방법을 통해 php_uname ()을 사용하여 운영 체제 정보를 얻고 /proc/1/cgroup 파일에서 Docker 관련 태그를 확인하여 PHP가 Docker 컨테이너에서 실행 중인지 확인할 수 있습니다. 이는 컨테이너화 된 환경에서 특정 작업을 수행하거나 조정하는 데 도움이되는 깔끔하고 효과적인 방법입니다.
이 기사가 도움이되기를 바랍니다! 더 많은 질문이 있으시면 웹 사이트를 방문하십시오.