[php]popen

popen 함수

popen 함수는 외부 프로그램과 파이프를 열어 데이터를 읽거나 쓸 수 있는 PHP 내장 함수입니다. 외부 프로그램을 실행하고, 해당 프로그램과 통신하는 데 사용됩니다.

사용법:

resource popen(string $command, string $mode);
  • $command: 실행할 외부 프로그램과 그 인자들을 포함한 명령어입니다.
  • $mode: 파일 모드로서 "r" (읽기) 또는 "w" (쓰기)를 사용할 수 있습니다.

예제:

$handle = popen('ls -l', 'r');

if ($handle) {
    while (($line = fgets($handle)) !== false) {
        echo $line;
    }
    pclose($handle);
}

popen 함수를 응용한 코드

1. popen 함수를 사용하여 URL에 접속하여 웹 페이지의 내용 출력하기

$handle = popen('curl -s https://www.example.com', 'r');

if ($handle) {
    while (($line = fgets($handle)) !== false) {
        echo $line;
    }
    pclose($handle);
}

popen 함수와 조건문, 반복문 사용하는 샘플 코드

2. 파일 필터링하기

$handle = popen('ls -l', 'r');

if ($handle) {
    while (($line = fgets($handle)) !== false) {
        if (strpos($line, '.txt') !== false) {
            echo $line;
        }
    }
    pclose($handle);
}

성능 향상을 위한 팁

  • popen을 사용할 때는 외부 프로그램을 실행해야 하므로 성능 저하가 발생할 수 있습니다. 가능하다면 PHP 내장 함수로 대체하는 것이 좋습니다.
  • 외부 프로그램 대신 PHP 함수나 라이브러리를 사용할 수 있는지 검토하여 프로세스 간 통신 오버헤드를 줄여야 합니다.
  • 외부 프로그램을 호출할 때 보안 상의 이유로 신뢰할 수 있는 소스로부터 입력을 받아야 합니다. 외부 입력을 직접 전달하면 취약점이 발생할 수 있습니다.

게시됨

카테고리

,

작성자