라이브러리
[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` 변수를 통해 반환됩니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.