라이브러리
[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 메소드의 다양한 사용법을 보여줍니다. 이벤트 핸들러를 등록하여 서버가 이벤트를 처리하는 방식으로 서버를 개발할 수 있습니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.