swoole은 다중 프로세스 모델 프레임워크입니다. 프로세스 swoole 애플리케이션이 시작되면 총 2+n+m개의 프로세스가 생성됩니다. n은 작업자 프로세스 수, m은 TaskWorker 프로세스 수, 1개의 마스터 프로세스와 Manager 프로세스의 관계는 아래 그림과 같습니다
Master 프로세스는 Manager 프로세스, Reactor 스레드 및 기타 작업 프로세스/스레드를 생성하는 주요 프로세스입니다.
Worker 프로세스는 Swoole의 작업 프로세스 역할을 하며 모든 비즈니스 로직 코드는 이 프로세스에서 실행됩니다. Reactor 스레드는 클라이언트로부터 데이터를 받으면 데이터를 패키징하고 파이프라인을 통해 작업자 프로세스로 보냅니다.
Swoole의 작업자/작업 프로세스는 모두 Manager 프로세스에 의해 분기되고 관리됩니다.
자식 프로세스가 끝나면 관리자 프로세스는 좀비 프로세스가 되지 않도록 자식 프로세스를 재활용하는 역할을 담당합니다. 그리고 새로운 하위 프로세스를 만듭니다
서버가 종료되면 관리자 프로세스는 모든 하위 프로세스에 신호를 보내 하위 프로세스에 서비스를 닫도록 알립니다.
서버가 다시 로드되면 관리자 프로세스는 하위 프로세스를 닫거나 다시 시작합니다. one by one
fork():
프로세스에 할당된 코드, 데이터, 리소스를 포함하는 프로세스입니다. fork() 함수는 시스템 호출을 통해 원래 프로세스와 거의 동일한 프로세스를 생성합니다. 즉, 두 프로세스는 완전히 동일한 작업을 수행할 수 있지만 초기 매개변수나 전달된 변수가 다를 경우 두 프로세스는 서로 다른 프로세스를 생성합니다. 다른 일도 할 수 있습니다.
프로세스가 fork() 함수를 호출한 후 시스템은 먼저 데이터 및 코드를 저장할 공간과 같은 리소스를 새 프로세스에 할당합니다. 그런 다음 원래 프로세스의 값과 다른 몇 가지 값을 제외하고 원래 프로세스의 모든 값을 새 프로세스에 복사합니다. 이는 자신을 복제하는 것과 같습니다.
추천 학습: swoole 튜토리얼
위 내용은 Swoole에서 작업자를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!