찾다
PHP 프레임워크Workerman작업자 하트비트를 사용하는 방법

작업자 하트비트를 사용하는 방법

Gateway/Worker 개발 모델은 서버 측 하트비트 감지를 지원하여 정기적으로 애플리케이션 계층의 하트비트를 클라이언트에 보낼 수 있으며, 극단적인 클라이언트 연결 끊김 상황(정전, 갑작스러운 네트워크 장애 등)을 신속하게 감지할 수 있습니다. .).

참고: 긴 연결 애플리케이션은 하트비트를 추가해야 합니다. 그렇지 않으면 오랫동안 통신이 없어 라우팅 노드에 의해 연결이 강제로 끊어질 수 있습니다. (추천 학습: workerman tutorial)

heartbeat에는 두 가지 주요 기능이 있습니다:

1 클라이언트는 정기적으로 서버에 포인트 데이터를 보내 일부 노드의 방화벽에 의해 연결이 끊어지는 것을 방지합니다. 오랫동안 통신이 끊긴 상황.

2. 서버는 하트비트를 통해 클라이언트가 온라인 상태인지 확인할 수 있습니다. 클라이언트가 지정된 시간 내에 데이터를 보내지 않으면 클라이언트는 오프라인으로 간주됩니다. 이는 극단적인 상황(정전, 네트워크 연결 끊김 등)으로 인해 클라이언트가 오프라인 상태가 되는 이벤트를 감지할 수 있습니다.

권장 하트비트 간격 값:

클라이언트가 60초 미만(예: 55초)의 하트비트 간격을 전송하는 것이 좋습니다.

예:

<?php
require_once __DIR__ . &#39;/Workerman/Autoloader.php&#39;;
use Workerman\Worker;
use Workerman\Lib\Timer;

// 心跳间隔55秒
define(&#39;HEARTBEAT_TIME&#39;, 55);

$worker = new Worker(&#39;text://0.0.0.0:1234&#39;);

$worker->onMessage = function($connection, $msg) {
    // 给connection临时设置一个lastMessageTime属性,用来记录上次收到消息的时间
    $connection->lastMessageTime = time();
    // 其它业务逻辑...
};

// 进程启动后设置一个每秒运行一次的定时器
$worker->onWorkerStart = function($worker) {
    Timer::add(1, function()use($worker){
        $time_now = time();
        foreach($worker->connections as $connection) {
            // 有可能该connection还没收到过消息,则lastMessageTime设置为当前时间
            if (empty($connection->lastMessageTime)) {
                $connection->lastMessageTime = $time_now;
                continue;
            }
            // 上次通讯时间间隔大于心跳间隔,则认为客户端已经下线,关闭连接
            if ($time_now - $connection->lastMessageTime > HEARTBEAT_TIME) {
                $connection->close();
            }
        }
    });
};

Worker::runAll();

위 구성은 클라이언트가 55초 이상 서버에 데이터를 보내지 않으면 서버는 클라이언트가 오프라인 상태라고 생각하여 연결을 닫고 트리거한다는 것입니다. onClose.

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

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구