PHP에서 쉘 명령을 비동기적으로 실행
PHP를 사용하여 쉘 스크립트를 실행할 때 PHP 실행을 차단하지 않고 비동기 작업을 수행하는 것이 바람직한 경우가 많습니다. 이는 PHP 요청을 지연시키지 않아야 하는 긴 프로세스에 특히 유용할 수 있습니다.
PHP는 exec(), shell_exec() 및 pcntl_fork()를 포함하여 셸 실행을 위한 다양한 함수를 제공하지만 원하는 기능을 직접 제공하는 함수는 없습니다. 비동기식 동작. 그러나 이를 에뮬레이트할 수 있는 접근 방식은 여러 가지가 있습니다.
'&'**
PHP 스크립트가 다음의 출력과 관련되지 않는 경우 백그라운드 프로세스 사용 쉘 스크립트의 경우 & 연산자를 사용하여 백그라운드에서 실행할 수 있습니다.
exec('path/to/script.sh &');
이 명령은 별도의 프로세스에서 스크립트를 실행하고 즉시 반환합니다. 계속 실행되도록 허용합니다.
표준 출력 및 오류 리디렉션(/dev/null)
셸 스크립트의 출력을 완전히 억제하려면, > /dev/null 2>/dev/null & 표현식은 exec() 명령에 추가될 수 있습니다:
exec('path/to/script.sh > /dev/null 2>/dev/null &');
이렇게 하면 표준 출력(stdout)과 표준 오류(stderr)가 모두 /dev/null로 리디렉션됩니다. , PHP 요청에서 스크립트 출력을 효과적으로 숨깁니다.
대체 리디렉션 구문
출력 리디렉션을 위한 대체 구문은 &> /dev/null &:
exec('path/to/script.sh &> /dev/null &');
이것은 > /dev/null 구문이지만 리디렉션과 배경을 단일 표현식으로 결합합니다.
이러한 기술을 구현하면 PHP 스크립트는 쉘 스크립트를 비동기식으로 실행할 수 있으므로 쉘 스크립트가 실행될 때까지 기다리지 않고 PHP 요청이 계속 실행될 수 있습니다. 완료되었습니다.
위 내용은 PHP에서 쉘 명령을 비동기적으로 어떻게 실행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!