라이브러리

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




PHP 에서 SwooleServer::on은 SwooleServer 클래스의 메소드 중 하나로, 이벤트 핸들러를 등록하는 메소드입니다. SwooleServer는 PHP에서 비동기 I/O를 지원하는 서버 프레임워크로, 이벤트 드리븐 아키텍처를 사용합니다. 이벤트 드리븐 아키텍처는 이벤트를 발생시키고, 이벤트 핸들러를 등록하여 이벤트를 처리하는 방식입니다.

SwooleServer::on 메소드는 이벤트 핸들러를 등록하는 데 사용됩니다. 이벤트 핸들러는 이벤트가 발생했을 때 호출되는 함수입니다. SwooleServer::on 메소드는 다음 형식으로 사용됩니다.

#hostingforum.kr
php

$swooleServer->on($event, $callback);



- `$event`: 이벤트 이름입니다. 예를 들어, `connect`, `receive`, `close` 등이 있습니다.
- `$callback`: 이벤트 핸들러 함수입니다.

다음은 SwooleServer::on 메소드의 예제입니다.

1. 연결 이벤트 핸들러 등록


#hostingforum.kr
php

$swooleServer = new SwooleServer('127.0.0.1', 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);



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

    echo "Client $fd connected
";

});



$swooleServer->on('receive', function ($server, $fd, $fromId, $data) {

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

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

});



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

    echo "Client $fd closed
";

});



$swooleServer->start();



위 예제에서는 `connect`, `receive`, `close` 이벤트 핸들러를 등록합니다. `connect` 이벤트 핸들러는 클라이언트가 연결되었을 때 호출됩니다. `receive` 이벤트 핸들러는 클라이언트가 메시지를 받았을 때 호출됩니다. `close` 이벤트 핸들러는 클라이언트가 연결을 끊었을 때 호출됩니다.

2. 에러 이벤트 핸들러 등록


#hostingforum.kr
php

$swooleServer = new SwooleServer('127.0.0.1', 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);



$swooleServer->on('error', function ($server, $fd, $errCode, $errMsg) {

    echo "Error: $errMsg
";

});



$swooleServer->start();



위 예제에서는 `error` 이벤트 핸들러를 등록합니다. `error` 이벤트 핸들러는 서버가 에러를 발생했을 때 호출됩니다.

3. 시작 이벤트 핸들러 등록


#hostingforum.kr
php

$swooleServer = new SwooleServer('127.0.0.1', 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);



$swooleServer->on('start', function ($server) {

    echo "Server started
";

});



$swooleServer->start();



위 예제에서는 `start` 이벤트 핸들러를 등록합니다. `start` 이벤트 핸들러는 서버가 시작되었을 때 호출됩니다.

4. 마감 이벤트 핸들러 등록


#hostingforum.kr
php

$swooleServer = new SwooleServer('127.0.0.1', 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);



$swooleServer->on('managerStart', function ($server) {

    echo "Manager started
";

});



$swooleServer->on('workerStart', function ($server, $workerId) {

    echo "Worker $workerId started
";

});



$swooleServer->on('workerStop', function ($server, $workerId) {

    echo "Worker $workerId stopped
";

});



$swooleServer->on('workerExit', function ($server, $workerId) {

    echo "Worker $workerId exited
";

});



$swooleServer->on('task', function ($server, $taskId, $fromId, $data) {

    echo "Task $taskId received: $data
";

    $server->finish($data);

});



$swooleServer->on('finish', function ($server, $taskId, $data) {

    echo "Task $taskId finished: $data
";

});



$swooleServer->on('shutdown', function ($server) {

    echo "Server shutting down
";

});



$swooleServer->start();



위 예제에서는 `managerStart`, `workerStart`, `workerStop`, `workerExit`, `task`, `finish`, `shutdown` 이벤트 핸들러를 등록합니다. `managerStart` 이벤트 핸들러는 매니저가 시작되었을 때 호출됩니다. `workerStart` 이벤트 핸들러는 워커가 시작되었을 때 호출됩니다. `workerStop` 이벤트 핸들러는 워커가 중단되었을 때 호출됩니다. `workerExit` 이벤트 핸들러는 워커가 종료되었을 때 호출됩니다. `task` 이벤트 핸들러는 태스크가 받았을 때 호출됩니다. `finish` 이벤트 핸들러는 태스크가 완료되었을 때 호출됩니다. `shutdown` 이벤트 핸들러는 서버가 종료되었을 때 호출됩니다.

위 예제는 SwooleServer::on 메소드의 다양한 사용법을 보여줍니다. 이벤트 핸들러를 등록하여 서버가 이벤트를 처리하는 방식으로 서버를 개발할 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

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

검색

게시물 검색