>  기사  >  PHP 프레임워크  >  Swoole은 왜 수면을 사용할 수 없나요?

Swoole은 왜 수면을 사용할 수 없나요?

WBOY
WBOY원래의
2022-04-13 15:09:282626검색

Swoole에서는 Sleep 기능을 사용하면 프로세스가 Sleep Blocking 상태가 됩니다. Swoole의 신호는 signalfd를 기반으로 구현되므로 신호가 전송될 때까지 Sleep을 중단할 수 없습니다. 지정된 시간에만 운영 체제가 현재 프로세스를 다시 활성화합니다.

Swoole은 왜 수면을 사용할 수 없나요?

이 튜토리얼의 운영 환경: Windows 10 시스템, Swoole 4 버전, DELL G3 컴퓨터

Swoole이 sleep을 사용할 수 없는 이유

비동기 IO 프로그램에서는 sleep/usleep/time_sleep_until/time_nanosleep이 허용되지 않습니다. (아래에서 슬립은 일반적으로 모든 슬립 기능을 지칭하는 데 사용됩니다.) 슬립 기능은 프로세스를 슬립 차단 상태로 만들 수 있으며, 슬립 프로세스 중에는 지정된 시간까지 현재 프로세스를 다시 깨우지 않습니다. 방해받을 수 있음

  • Swoole의 신호 처리는 signalfd 기반이므로 신호가 보내져도 sleep을 방해할 수 없습니다

  • Swoole_event_add, swoole_timer_tick, swoole_timer_after, swoole_process::signal, asynchronous swoole_client가 처리 중입니다. 수면은 나중에 작동을 멈춥니다. swoole_server는 더 이상 새 요청을 처리할 수 없습니다.

  • 인스턴스 프로그램

    $serv = new swoole_server("127.0.0.1", 9501);
    $serv->set(['worker_num' => 1]);
    $serv->on('receive', function ($serv, $fd, $from_id, $data) {
        sleep(100);
        $serv->send($fd, 'Swoole: '.$data);
    });
    $serv->start();
  • onReceive 이벤트에서 sleep 함수가 실행되며 서버는 100초 이내에 더 이상 클라이언트 요청을 받을 수 없습니다.
  • 추천 학습:

    swoole 튜토리얼

위 내용은 Swoole은 왜 수면을 사용할 수 없나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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