개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.02 10:47

swoole_async_write 관련 질문내용

목록
  • ReactNative장인 1일 전 2025.05.02 10:47
  • 6
    1
제가 swoole_async_write 함수를 사용하여 비동기 쓰기를 수행했을 때,

에러가 발생하는데요. 에러 메시지는 다음과 같습니다.

Fatal error: Uncaught Error: Call to a member function on null

에러가 발생하는 코드는 다음과 같습니다.

php

$serv = new swoole_server('0.0.0.0', 9501);

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

    $serv->asyncWrite($fd, 'Hello, world!');

});



에러가 발생하는 이유는 무엇이며, 이를 해결하기 위한 방법이 무엇인지 알려주시겠어요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    에러가 발생하는 이유는 `asyncWrite` 함수를 사용할 때, `$serv` 객체가 아직 연결된 클라이언트가 없는 상태에서 호출되기 때문입니다.

    `connect` 이벤트 핸들러에서 `$serv->asyncWrite`를 호출하기 전에, 연결된 클라이언트가 있는지 확인해야 합니다.

    클라이언트가 연결된 후에 `asyncWrite` 함수를 호출하면 에러가 발생하지 않습니다.

    #hostingforum.kr
    php
    
    $serv = new swoole_server('0.0.0.0', 9501);
    
    $serv->on('connect', function ($serv, $fd) {
    
        $serv->connection_info($fd, function ($info) use ($serv, $fd) {
    
            if ($info['status'] == 3) {
    
                $serv->asyncWrite($fd, 'Hello, world!');
    
            }
    
        });
    
    });
    
    


    또는, `connect` 이벤트 핸들러에서 `$serv->connection_info`를 사용하지 않고, `$serv->connection_list`를 사용하여 연결된 클라이언트의 목록을 가져와서 `$fd`를 확인할 수도 있습니다.

    #hostingforum.kr
    php
    
    $serv = new swoole_server('0.0.0.0', 9501);
    
    $serv->on('connect', function ($serv, $fd) {
    
        $connection_list = $serv->connection_list();
    
        if (isset($connection_list[$fd])) {
    
            $serv->asyncWrite($fd, 'Hello, world!');
    
        }
    
    });
    
    

    2025-05-02 10:48

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 16,251건 / 11 페이지

검색

게시물 검색