>백엔드 개발 >PHP 튜토리얼 >차단하지 않고 PHP 명령을 비동기적으로 실행하는 방법은 무엇입니까?

차단하지 않고 PHP 명령을 비동기적으로 실행하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-09 12:00:25500검색

How to Run PHP Commands Asynchronously Without Blocking?

결과를 기다리지 않고 PHP 명령을 실행하는 방법

PHP에서 exec 명령은 외부 명령을 실행할 수 있지만 기본적으로 PHP는 대기합니다. 계속하기 전에 명령이 완료되도록 합니다. 그러나 특정 시나리오에서는 명령을 시작하고 결과를 기다리지 않고 다른 작업을 계속하는 것이 바람직합니다.

해결책:

PHP 문서에서 해결 방법을 제공합니다. 차단하지 않고 명령을 실행하려면:

// Redirect stdout and stderr to /dev/null to suppress output
exec('run_baby_run > /dev/null 2>&1 &');

이것은 명령:

  1. run_baby_run 명령을 실행합니다.
  2. 표준 출력 및 표준 오류를 /dev/null로 리디렉션하고 명령의 모든 출력을 억제합니다.
  3. 배경을 설정합니다. 명령, PHP와 독립적으로 실행되는 별도의 프로세스 생성 script.

프로세스 분리를 ​​위한 대체 솔루션:

Apache 스레드에서 프로세스를 분리하고 PHP 스크립트가 종료되더라도 계속 실행되도록 하려면, 다음 명령을 사용하세요:

exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');

이것은 명령:

  1. bash 세션을 시작합니다.
  2. 호출 스크립트가 종료될 경우 프로세스가 종료되는 것을 방지하기 위해 nohup을 실행합니다.
  3. 새 세션 ID(setsid)를 설정합니다. 현재 프로세스에서 프로세스를 분리합니다.
  4. 다음과 같이 출력을 억제합니다. 전에.

위 내용은 차단하지 않고 PHP 명령을 비동기적으로 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.