라이브러리

[PHP] socket_set_blocking - stream_set_blocking의 별칭




socket_set_blocking() 함수

PHP의 socket_set_blocking() 함수는 소켓의 블록킹 모드를 설정하는 함수입니다. 블록킹 모드가 활성화되면 소켓은 데이터를 읽거나 쓰기 위해 대기하게 됩니다. 블록킹 모드가 비활성화되면 소켓은 데이터를 읽거나 쓰기 위해 즉시 반환됩니다.

블록킹 모드의 종류

PHP의 socket_set_blocking() 함수는 두 가지 블록킹 모드를 지원합니다.

- 0 (비블록킹) : 소켓은 데이터를 읽거나 쓰기 위해 즉시 반환됩니다.
- 1 (블록킹) : 소켓은 데이터를 읽거나 쓰기 위해 대기하게 됩니다.

사용 예제

다음 예제는 소켓의 블록킹 모드를 설정하는 방법을 보여줍니다.

#hostingforum.kr
php

<?php



// 소켓 생성

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);



// 소켓의 블록킹 모드 설정 (비블록킹)

socket_set_blocking($sock, 0);



// 소켓에 데이터를 쓰기

socket_write($sock, "Hello, World!", 13);



// 소켓의 블록킹 모드 설정 (블록킹)

socket_set_blocking($sock, 1);



// 소켓에서 데이터를 읽기

$data = socket_read($sock, 13);



// 소켓의 블록킹 모드 설정 (비블록킹)

socket_set_blocking($sock, 0);



// 소켓을 닫기

socket_close($sock);



?>



위 예제에서, 소켓의 블록킹 모드는 비블록킹 모드 (`0`)로 설정되어 있습니다. 소켓에 데이터를 쓰기 위해 `socket_write()` 함수를 호출하면 즉시 반환됩니다. 소켓의 블록킹 모드를 블록킹 모드 (`1`)로 설정한 후, 소켓에서 데이터를 읽기 위해 `socket_read()` 함수를 호출하면 대기하게 됩니다.

블록킹 모드의 장단점

블록킹 모드의 장단점은 다음과 같습니다.

- 장점 :
+ 소켓은 데이터를 읽거나 쓰기 위해 즉시 반환되지 않습니다. 따라서 소켓의 성능이 향상됩니다.
+ 소켓은 데이터를 읽거나 쓰기 위해 대기하지 않습니다. 따라서 소켓의 리소스가 절약됩니다.
- 단점 :
+ 소켓은 데이터를 읽거나 쓰기 위해 대기합니다. 따라서 소켓의 성능이 저하됩니다.
+ 소켓은 데이터를 읽거나 쓰기 위해 대기하기 때문에 리소스가 소비됩니다.

결론

PHP의 socket_set_blocking() 함수는 소켓의 블록킹 모드를 설정하는 함수입니다. 블록킹 모드가 활성화되면 소켓은 데이터를 읽거나 쓰기 위해 대기하게 됩니다. 블록킹 모드가 비활성화되면 소켓은 데이터를 읽거나 쓰기 위해 즉시 반환됩니다. 소켓의 블록킹 모드는 비블록킹 모드 (`0`)와 블록킹 모드 (`1`) 두 가지 종류가 있습니다. 소켓의 블록킹 모드는 소켓의 성능과 리소스를 결정하는 중요한 요소입니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 247 페이지

검색

게시물 검색