라이브러리

[PHP] SwooleServerPort::on - 이벤트별로 콜백 함수를 등록합니다.




SwooleServerPort::on


SwooleServerPort::on은 Swoole Server의 이벤트를 처리하는 방법입니다. Swoole Server는 이벤트 기반의 비동기 I/O 프레임워크입니다. 이벤트를 처리하는 방법은 이벤트 핸들러를 등록하는 것입니다.

SwooleServerPort::on은 이벤트 핸들러를 등록하는 메서드입니다. 이벤트 핸들러는 이벤트가 발생했을 때 호출되는 함수입니다.

예제


#hostingforum.kr
php

use SwooleServer;



// Swoole Server를 생성합니다.

$server = new Server("127.0.0.1", 9501);



// 이벤트 핸들러를 등록합니다.

$server->on("connect", function ($server, $fd) {

    echo "Client $fd connected.
";

});



$server->on("receive", function ($server, $fd, $from_id, $data) {

    echo "Client $fd received message: $data
";

    $server->send($fd, "Hello, client!");

});



$server->on("close", function ($server, $fd) {

    echo "Client $fd closed.
";

});



// 서버를 시작합니다.

$server->start();



이벤트 핸들러


SwooleServerPort::on은 이벤트 핸들러를 등록하는 메서드입니다. 이벤트 핸들러는 이벤트가 발생했을 때 호출되는 함수입니다.

SwooleServerPort::on의 이벤트 핸들러는 다음과 같은 이벤트를 처리할 수 있습니다.

- `connect`: 클라이언트가 연결되었을 때 호출됩니다.
- `receive`: 클라이언트가 메시지를 받았을 때 호출됩니다.
- `close`: 클라이언트가 연결을 끊었을 때 호출됩니다.
- `task`: 태스크가 완료되었을 때 호출됩니다.
- `finish`: 태스크가 완료되었을 때 호출됩니다.
- `workerStart`: 워커가 시작되었을 때 호출됩니다.
- `workerStop`: 워커가 중지되었을 때 호출됩니다.

이벤트 핸들러의 인자


이벤트 핸들러의 인자는 다음과 같습니다.

- `$server`: Swoole Server 객체입니다.
- `$fd`: 클라이언트의 파일 디스크립터입니다.
- `$from_id`: 클라이언트의 ID입니다.
- `$data`: 클라이언트가 보낸 메시지입니다.

예제


#hostingforum.kr
php

use SwooleServer;



// Swoole Server를 생성합니다.

$server = new Server("127.0.0.1", 9501);



// 이벤트 핸들러를 등록합니다.

$server->on("connect", function ($server, $fd) {

    echo "Client $fd connected.
";

});



$server->on("receive", function ($server, $fd, $from_id, $data) {

    echo "Client $fd received message: $data
";

    $server->send($fd, "Hello, client!");

});



$server->on("close", function ($server, $fd) {

    echo "Client $fd closed.
";

});



// 서버를 시작합니다.

$server->start();



태스크


태스크는 서버가 처리해야 하는 작업입니다. 태스크는 서버의 워커 스레드에서 처리됩니다. 태스크를 처리하는 방법은 이벤트 핸들러를 등록하는 것입니다.

태스크 핸들러는 다음과 같은 이벤트를 처리할 수 있습니다.

- `task`: 태스크가 완료되었을 때 호출됩니다.
- `finish`: 태스크가 완료되었을 때 호출됩니다.

예제


#hostingforum.kr
php

use SwooleServer;



// Swoole Server를 생성합니다.

$server = new Server("127.0.0.1", 9501);



// 태스크 핸들러를 등록합니다.

$server->on("task", function ($server, $task_id, $data) {

    echo "Task $task_id started.
";

    // 태스크를 처리합니다.

    $result = "Task $task_id completed.";

    $server->finish($result);

});



// 태스크를 전송합니다.

$server->task("Hello, world!");



// 서버를 시작합니다.

$server->start();



태스크의 인자


태스크 핸들러의 인자는 다음과 같습니다.

- `$server`: Swoole Server 객체입니다.
- `$task_id`: 태스크의 ID입니다.
- `$data`: 태스크의 데이터입니다.

태스크의 반환


태스크 핸들러는 태스크의 반환 값을 반환할 수 있습니다. 태스크의 반환 값은 태스크 핸들러의 `$result` 변수를 통해 반환됩니다.

예제


#hostingforum.kr
php

use SwooleServer;



// Swoole Server를 생성합니다.

$server = new Server("127.0.0.1", 9501);



// 태스크 핸들러를 등록합니다.

$server->on("task", function ($server, $task_id, $data) {

    echo "Task $task_id started.
";

    // 태스크를 처리합니다.

    $result = "Task $task_id completed.";

    $server->finish($result);

});



// 태스크를 전송합니다.

$server->task("Hello, world!");



// 태스크의 반환 값을 받습니다.

$server->on("finish", function ($server, $task_id, $data) {

    echo "Task $task_id completed: $data
";

});



// 서버를 시작합니다.

$server->start();



태스크의 반환의 인자


태스크 핸들러의 반환 값의 인자는 다음과 같습니다.

- `$server`: Swoole Server 객체입니다.
- `$task_id`: 태스크의 ID입니다.
- `$data`: 태스크의 반환 값입니다.

태스크의 반환의 반환


태스크 핸들러의 반환 값의 반환은 태스크 핸들러의 `$result` 변수를 통해 반환됩니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 8,985건 / 94 페이지

검색

게시물 검색