> 백엔드 개발 > PHP 튜토리얼 > 신호 처리 메커니즘의 작동을 학습하는 PHP

신호 처리 메커니즘의 작동을 학습하는 PHP

little bottle
풀어 주다: 2023-04-06 06:02:01
앞으로
2325명이 탐색했습니다.

이 글은 주로 PHP 언어로 작성된 신호 처리 메커니즘의 예를 설명합니다. 관심 있는 친구들이 와서 배울 수 있습니다.

function sig_handler($sig)
{
    print("handled sig: $sig\n");
}



pcntl_signal(SIGIO,   "sig_handler");
posix_kill(posix_getpid(),SIGIO);

while(true)
{
    posix_kill(posix_getpid(),SIGIO);

    pcntl_signal_dispatch();

    sleep(1);
}
로그인 후 복사

PHP에서 제공하는 선언(ticks=1) 및 Tick_handler()의 신호 처리 메커니즘을 사용하는 대신 신호 대기열을 수동으로 순환하는 것이 가장 좋습니다. 틱 메커니즘의 성능 문제로 인해 Tick_handler가 콜백됩니다. 명령문이 실행될 때마다 신호가 있는지 확인하지만 대부분 신호가 없습니다.

posix_signal은 신호의 콜백 처리를 설정합니다.

posix_kill은 신호를 프로세스의 보류 중인 신호 대기열에만 넣습니다. 신호 대기열의 신호는 pcntl_signal_dispatch

posix_getpwnam(" nginx") : 사용자 이름의 uid, gid 및 기타 정보를 가져옵니다.

pcntl_signal(SIGPIPE, SIG_IGN, false): 커널이 보낸 SIGPIPE 신호를 무시합니다. 연결이 닫히면 프로세스는 계속해서 잘못된 소켓이고 시스템이 RST 제어 비트 TCP 패킷을 수신하면 시스템은 프로세스에 SIGPIPE 신호를 보내 연결이 끊어졌으며 더 이상 쓸 수 없음을 프로세스에 알립니다. 이 신호의 기본 처리는 프로세스를 종료하는 것이지만, 프로세스는 이를 포착하고 신호를 무시하여 원하지 않게 종료되는 것을 방지할 수 있습니다.

socket 컨텍스트 옵션:

backlog: 스트림 청취 대기열에서 처리되지 않은 연결 수를 제한하는 데 사용됩니다.

so_reuseport: 재사용 포트(해시되기 때문에 동일한 포트를 청취하는 여러 프로세스에 연결하도록 커널에 의해 예약됨) 연결에 해당하는 프로세스를 표시하여 청취 프로세스 수를 변경할 수 없도록 하기 위해,)

타이머 신호 처리

pcntl_signal(SIGALRM,"sig_handler");
pcntl_alarm(2);
function sig_handler($sig)
{
    echo "one second after";
}
while (1)
{
    pcntl_signal_dispatch();
    sleep(1);
}
로그인 후 복사

관련 튜토리얼: 초보부터 숙련까지의 PHP 프로그래밍

위 내용은 신호 처리 메커니즘의 작동을 학습하는 PHP의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿