>  기사  >  PHP 프레임워크  >  Swoole을 다시 시작하는 방법

Swoole을 다시 시작하는 방법

(*-*)浩
(*-*)浩원래의
2019-12-07 14:24:135527검색

Swoole을 다시 시작하는 방법

Swoole에서는 다양한 신호를 메인 프로세스로 보낼 수 있으며, 메인 프로세스는 수신된 신호 유형에 따라 다르게 처리합니다.

예를 들어 다음과 같습니다(추천 학습: swoole 동영상 튜토리얼)

1、kill -SIGTERM|-15 master_pid  终止Swoole程序,一种优雅的终止信号,会待进程执行完当前程序之后中断,而不是直接干掉进程
2、kill -USR1|-10  master_pid  重启所有的Worker进程
3、kill -USR2|-12  master_pid  重启所有的Task Worker进程

USR1 신호가 Master 프로세스로 전송되면 Master 프로세스는 Manager 프로세스를 통해 동일한 신호를 Worker 프로세스로 전달합니다. 이 신호를 받은 후 작업자 프로세스는 실행 중인 논리를 처리한 후 프로세스 메모리를 해제하고 자체 종료한 다음 관리자 프로세스가 새 작업자 프로세스를 다시 시작합니다.

새로운 작업자 프로세스는 새로운 메모리 공간을 차지합니다.

시나리오:

온라인 프로젝트인 경우 바쁜 백엔드 서버가 언제든지 요청을 처리하고 있습니다. 관리자가 프로세스를 종료하여 서버 프로그램을 종료/다시 시작하면 코드가 중간에 종료될 수 있습니다. 실행의.

이 경우 데이터 불일치가 발생합니다.

예를 들어 거래 시스템에서 결제 로직의 다음 섹션은 결제 로직 이후에 프로세스가 종료되는 것으로 가정합니다. 이로 인해 사용자는 통화를 지불하지만 상품을 배송하지 못하며 그 결과는 매우 심각합니다.

swoole은 원활한 재시작 메커니즘을 제공합니다. 서버 재시작을 완료하려면 swoole_server의 기본 프로세스에 특정 신호만 보내면 됩니다.

참고 사항:

1. 업데이트는 작업자 프로세스에만 적용됩니다. 작업자 프로세스에 포함된다는 것은 마스터 프로세스와 관리자 프로세스에 작성된 업데이트 코드가 적용되지 않는다는 의미입니다. onWorkerStart 콜백 파일을 다시 시작하는 것이 합리적입니다.

Worker 프로세스가 시작되기 전에 메모리에 로드된 파일을 다시 적용하려면 서버를 닫고 다시 시작하면 됩니다.

2. 작업자 코드에 직접 작성된 로직은 신호가 전송되더라도 적용되지 않습니다. 적용하려면 관련 비즈니스 로직 코드를 도입해야 합니다.

위 내용은 Swoole을 다시 시작하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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