이 글에서는 PHP의 5가지 주요 IO 모델의 차단 및 비차단에 대해 자세히 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
Blocking: 애플리케이션이 사용자 공간으로 돌아가기 전에 IO 작업을 완료해야 함을 의미합니다.
Non-blocking: IO 작업이 호출된 직후 애플리케이션이 사용자에게 상태 값을 반환한다는 의미입니다. , IO 작업을 기다리지 않고 완료되었습니다.
차단 모델:
비차단 모드:
차단 모드에서는 사용자 프로세스가 항상 커널 상태 데이터를 기다리므로 효율성이 매우 낮습니다. 예를 들어, Xiao Ming은 물을 끓이고 싶을 때 물이 끓을 때까지 기다려야 합니다. 그러나 실제로 Xiao Ming은 물을 끓이는 과정에서 다른 일을 할 수 있습니다.
최적화는 사용자 프로세스가 IO 작업을 수행한 후 커널 상태가 즉시 비어 있는 값을 반환합니다. 사용자 프로세스는 커널 상태 데이터가 준비되면 다른 작업을 수행할 수 있습니다. 실제 값을 얻기 위해 요청할 수 있습니다. 위의 Xiao Ming의 예를 보면 Xiao Ming이 물을 끓일 때 책을 읽을 수 있고, 잠시 동안 물이 끓는지 확인하고, 물이 끓는지 확인하는 동시에 책을 읽을 수 있고, 공부하다.
성능 분석:
프로그램이 두 가지 작업 a와 b를 수행해야 하는데, a는 IO 작업을 수행해야 하고 b는 수행하지 않는다고 가정합니다. Blocking 모드에서 소요되는 시간은 a+b와 같고, Non-blocking 모드에서는 a와 b의 최대 시간 소모 작업과 같습니다.
서버 코드:
$server = stream_socket_server('tcp://127.0.0.1:9999', $erron, $error); while (true) { $conn = stream_socket_accept($server); if ($conn) { $data = fread($conn, 65535); echo $data; sleep(3); fwrite($conn, 'this is server'); fclose($conn); } }
차단 클라이언트:
function operation() { sleep(2); } echo "client start n"; $client = stream_socket_client('tcp://127.0.0.1:9999', $erron, $error, 60); fwrite($client, "is client 1n"); echo fread($client, 65535); operation(); fclose($client);
비차단 클라이언트:
function operation() { sleep(2); } echo "client start n"; $client = stream_socket_client('tcp://127.0.0.1:9999', $erron, $error, 60); stream_set_blocking($client, 0);//设置非阻塞 fwrite($client, "is client 1n"); operation(); while (!feof($client)) { sleep(1); var_dump(fread($client, 65535)); } fclose($client);
시간 소비:
차단 모드
비차단 모드
Re 추천 학습: php 비디오 튜토리얼
위 내용은 PHP의 5가지 IO 모델: 차단 및 비차단에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음
