Swoole 프로세스가 종료된 후 Server->reload 방법을 사용하여 다시 시작할 수 있습니다.
Server->reload 방법 소개:
모든 Worker/Task 프로세스를 다시 시작합니다.
bool Server->reload(bool $only_reload_taskworkrer = false)
$only_reload_taskworkrer 태스크 프로세스만 다시 시작할지 여부
바쁜 백엔드 서버가 언제든지 요청을 처리하고 있으므로 관리자가 프로세스를 종료하여 서버 프로그램을 종료/다시 시작하면 중간에 코드가 종료될 수 있습니다. 실행.
이 경우 데이터 불일치가 발생합니다. 예를 들어, 거래 시스템에서 결제 로직의 다음 섹션은 결제 로직 이후에 프로세스가 종료되는 것으로 가정합니다. 이로 인해 사용자는 통화를 지불하지만 상품을 배송하지 못하며 그 결과는 매우 심각합니다.
Swoole은 유연한 종료/다시 시작 메커니즘을 제공합니다. 관리자는 특정 신호를 서버에 보내기만 하면 서버의 작업자 프로세스가 안전하게 종료될 수 있습니다.
1. 이 신호를 메인 프로세스/관리 프로세스에 보내면 서버가 안전하게 종료됩니다
2. PHP 코드에서 $serv->shutdown()을 호출하여 이 작업을 완료할 수 있습니다
3. : 메인 프로세스로 전송/관리 프로세스는 모든 작업자 프로세스를 원활하게 다시 시작하는 SIGUSR1 신호를 보냅니다
4. PHP 코드에서 $serv->reload()를 호출하여 이 작업을 완료할 수 있습니다
5. 보호 메커니즘. 재로드가 진행 중일 때 새로운 재시작 신호가 수신되면 폐기됩니다
6. 사용자/그룹이 설정된 경우 작업자 프로세스는 마스터 프로세스에 정보를 보낼 권한이 없을 수 있습니다. 이 경우 루트 계정을 사용해야 하며 재시작하려면 셸에서 kill 명령을 실행해야 합니다
7. addProcess
에 의해 추가된 사용자 프로세스에는 reload 명령이 유효하지 않습니다. 권장 학습: swoole 비디오 튜토리얼
위 내용은 Swoole 프로세스가 닫힌 후 다시 시작하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!