>백엔드 개발 >PHP 튜토리얼 >PHP 프로그램 데몬화 예제에 대한 자세한 설명

PHP 프로그램 데몬화 예제에 대한 자세한 설명

小云云
小云云원래의
2018-03-22 09:11:171175검색

일반적으로 서버 프로그램은 시스템 백그라운드에서 실행되는데 이는 일반적인 대화형 명령줄 프로그램과 매우 다릅니다. glibc에는 함수 데몬이 있습니다. 이 함수를 호출하면 현재 프로세스가 터미널을 떠나 데몬 프로세스가 될 수 있습니다. 자세한 내용은 man 데몬을 참조하세요. 현재 PHP에는 그러한 기능이 없습니다. 물론 관심이 있다면 이를 구현하기 위해 PHP 확장 기능을 작성할 수 있습니다.

PHP 명령줄 프로그램의 데몬화를 구현하는 방법에는 두 가지가 있습니다.

1. nohup을 사용하세요

nohup php myprog.php > log.txt &

데몬화는 여기에서 이루어집니다.

php myprog.php만 실행합니다. ctrl+c를 누르면 프로그램 실행이 중단되고 현재 프로세스와 하위 프로세스가 종료됩니다.

php myprog.php &, 실행된 프로그램도 백그라운드에서 실행되지만 실제로는 사용자가 터미널을 종료하면 프로세스가 종료됩니다.

2. PHP 코드를 사용하여

function daemonize()
{$pid = pcntl_fork();if ($pid == -1)
{die("fork(1) failed!\n");
}elseif ($pid > 0)
{//让由用户启动的进程退出exit(0);
}//建立一个有别于终端的新session以脱离终端posix_setsid();$pid = pcntl_fork();if ($pid == -1)
{die("fork(2) failed!\n");
}elseif ($pid > 0)
{//父进程退出, 剩下子进程成为最终的独立进程exit(0);
}
}daemonize();sleep(1000);

위 코드를 사용하여 데몬화를 구현합니다. PHP 프로그램을 백그라운드에서 실행해야 하는 경우 캡슐화된 함수 daemonize()를 한 번만 호출하면 됩니다.
참고: 여기에는 표준 입력 및 출력의 리디렉션이 없습니다.

관련 권장 사항:

PHP 프로그램 데몬화

위 내용은 PHP 프로그램 데몬화 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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