라이브러리

[PHP] EvLoop::signal - 현재 이벤트 루프 인스턴스와 연관된 EvSignal 워처 객체를 생성합니다.




EvLoop::signal


EvLoop은 PHP의 비동기 I/O 라이브러리인 Ev의 주요 클래스입니다. EvLoop은 이벤트 루프를 관리하고, 이벤트를 처리하는 역할을 합니다. EvLoop::signal은 이벤트 루프에 대한 신호를 등록하는 메서드입니다.

# 신호란?


신호는 프로세스에 대한 이벤트입니다. 예를 들어, Ctrl+C를 누르면 프로세스에 SIGINT 신호가 전송됩니다. 신호는 프로세스가 특정 이벤트에 반응할 수 있도록 합니다.

# EvLoop::signal 사용법


EvLoop::signal 메서드는 두 개의 매개변수를 받습니다.

* `$signal`: 신호의 종류를 나타내는 정수입니다. 예를 들어, SIGINT는 2, SIGTERM은 15입니다.
* `$callback`: 신호가 발생했을 때 호출할 콜백 함수입니다.

#hostingforum.kr
php

use EvLoop;

use EvSignal;



$loop = new Loop();



// SIGINT 신호에 대한 콜백 함수

$callback = function () {

    echo "SIGINT 신호가 발생했습니다.
";

};



// SIGINT 신호를 등록합니다.

$loop->signal(SIGINT, $callback);



// 이벤트 루프를 시작합니다.

$loop->run();



# 예제


이 예제는 SIGINT 신호에 대한 콜백 함수를 등록하고, 이벤트 루프를 시작합니다. SIGINT 신호가 발생하면 콜백 함수가 호출됩니다.

#hostingforum.kr
php

use EvLoop;

use EvSignal;



$loop = new Loop();



// SIGINT 신호에 대한 콜백 함수

$callback = function () {

    echo "SIGINT 신호가 발생했습니다.
";

    // 이벤트 루프를 종료합니다.

    $loop->stop();

};



// SIGINT 신호를 등록합니다.

$loop->signal(SIGINT, $callback);



// 이벤트 루프를 시작합니다.

$loop->run();



# 신호 처리하기


신호를 처리하는 방법은 여러 가지가 있습니다. 예를 들어, SIGINT 신호가 발생하면 프로세스를 종료할 수 있습니다. SIGTERM 신호가 발생하면 프로세스를 종료할 수 있습니다.

#hostingforum.kr
php

use EvLoop;

use EvSignal;



$loop = new Loop();



// SIGINT 신호에 대한 콜백 함수

$callback = function () {

    echo "SIGINT 신호가 발생했습니다.
";

    // 프로세스를 종료합니다.

    exit(0);

};



// SIGTERM 신호에 대한 콜백 함수

$callback_term = function () {

    echo "SIGTERM 신호가 발생했습니다.
";

    // 프로세스를 종료합니다.

    exit(0);

};



// SIGINT 신호를 등록합니다.

$loop->signal(SIGINT, $callback);



// SIGTERM 신호를 등록합니다.

$loop->signal(SIGTERM, $callback_term);



// 이벤트 루프를 시작합니다.

$loop->run();



# 참고


EvLoop::signal 메서드는 PHP 7.2 이상에서 사용할 수 있습니다. 또한, 신호를 처리하는 방법은 운영체제에 따라 다를 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 572 페이지

검색

게시물 검색