개발자 Q&A

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

2025.05.12 14:37

stream_notification_callback에 대한 질문

목록
  • 프로그래밍도깨비 1일 전 2025.05.12 14:37
  • 1
    1
저는 stream_notification_callback 함수에 대해 공부 중인데, 사용법이 헷갈립니다.

stream_notification_callback 함수는 어떤 역할을 하며, 어떻게 사용해야 하는지 알려주세요.

예를 들어, stream_notification_callback 함수를 사용하여 실시간 업데이트를 구현하는 방법은 무엇입니까?

또한, stream_notification_callback 함수의 파라미터와 옵션에 대해 자세히 알려주세요.

감사합니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    stream_notification_callback 함수는 PHP에서 사용하는 비동기 통신을 위한 callback 함수입니다. 이 함수는 stream_socket_accept 함수와 함께 사용하여, 클라이언트와의 연결을 수락하고, 데이터를 전송하는 데 사용됩니다.

    stream_notification_callback 함수를 사용하여 실시간 업데이트를 구현하는 방법은 다음과 같습니다.

    1. stream_socket_accept 함수를 사용하여 클라이언트와의 연결을 수락합니다.
    2. stream_notification_callback 함수를 등록하여 데이터를 전송할 때마다 호출합니다.
    3. callback 함수 내에서 데이터를 처리하고, 클라이언트에게 전송합니다.

    stream_notification_callback 함수의 파라미터는 다음과 같습니다.

    - $read: 읽을 데이터를 담은 배열
    - $write: 쓰기 데이터를 담은 배열
    - $except: 예외 데이터를 담은 배열

    옵션으로는 다음과 같습니다.

    - STREAM_NOTIFY_CALLBACK_PARAM: callback 함수 내에서 사용할 데이터를 담은 배열
    - STREAM_NOTIFY_CLOSE: 연결이 닫혔을 때 호출
    - STREAM_NOTIFY_CONNECT: 연결이 수립되었을 때 호출
    - STREAM_NOTIFY_ERROR: 오류가 발생했을 때 호출
    - STREAM_NOTIFY_EOF: 데이터가 끝났을 때 호출
    - STREAM_NOTIFY_FLUSH_ON_CLOSE: 연결이 닫히면 버퍼를 비우기 위해 호출
    - STREAM_NOTIFY_PAUSED: 데이터 전송이 중단되었을 때 호출
    - STREAM_NOTIFY_PROGRESS: 데이터 전송의 진행 상황을 알려주기 위해 호출
    - STREAM_NOTIFY_WRITE_COMPLETE: 데이터를 전송한 후 호출

    예를 들어, stream_notification_callback 함수를 사용하여 실시간 업데이트를 구현하는 코드는 다음과 같습니다.

    #hostingforum.kr
    php
    
    $server = stream_socket_server('tcp://localhost:1234', $errno, $errstr);
    
    if (!$server) {
    
        die("소켓 생성 실패: $errstr ($errno)n");
    
    }
    
    
    
    stream_set_blocking($server, 0);
    
    
    
    $callback = function($read, $write, $except) {
    
        if ($read) {
    
            echo "클라이언트가 데이터를 보냈습니다.n";
    
        }
    
        if ($write) {
    
            echo "클라이언트에게 데이터를 보냈습니다.n";
    
        }
    
        if ($except) {
    
            echo "예외가 발생했습니다.n";
    
        }
    
    };
    
    
    
    stream_notification_callback($callback);
    
    
    
    while (true) {
    
        $client = stream_socket_accept($server);
    
        if ($client) {
    
            echo "클라이언트와 연결되었습니다.n";
    
            stream_set_blocking($client, 0);
    
            stream_notification_callback($callback);
    
            while (true) {
    
                $data = fread($client, 1024);
    
                if ($data === false) {
    
                    break;
    
                }
    
                echo "클라이언트가 데이터를 보냈습니다.n";
    
                fwrite($client, "서버에서 데이터를 보냈습니다.");
    
            }
    
            fclose($client);
    
        }
    
    }
    
    


    이 코드는 클라이언트와의 연결을 수락하고, 데이터를 전송하는 데 사용됩니다. callback 함수 내에서 데이터를 처리하고, 클라이언트에게 전송합니다.

    2025-05-12 14:38

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

검색

게시물 검색