Swoole 병발 프로 그래 밍 의 매력 에 대해 논 하 다.
만약 에 우리 가 가위 바위 보 를 하 는 웹 게임 을 한다 고 가정 하면 세 명의 게이머 가 동시에 퀴즈 를 제출 한 후에 승 자 를 표시 합 니 다.전통 적 인 직렬 화 웹 프로 그래 밍 에서 우 리 는 일반적으로 이렇게 생각한다.
form 폼 을 설정 하여 사용자 가 퀴즈 를 제출 한 후 MySQL/Redis 저장 소 에 저장 합 니 다.
결과 보기 단 추 를 추가 합 니 다.완료 되 지 않 으 면 다른 사람 이 제출 하 기 를 기다 리 고 있 는 것 으로 표 시 됩 니 다.세 사람 이 모두 제출 할 때 저장 소 를 조회 하고 최종 결 과 를 표시 합 니 다.
병렬 프로 그래 밍
이 장면 은 Swoole 을 사용 하여 동시 프로 그래 밍 을 실현 할 수 있 습 니 다.MySQL/Redis 저장 에 의존 하지 않 아 도 메모리 에서 퀴즈 를 완성 할 수 있 습 니 다.
사용자 가 퀴즈 를 제출 할 때 hold 요청 을 유지 하고 결 과 를 되 돌려 주지 않 으 며 사용 자 는 대기 상태 에 들 어 갑 니 다.현재 요청 과 연결 을 메모리 에 유지 합 니 다.
세 사람 이 모두 제출 할 때 메모리 에서 요청 한 내용 을 꺼 내 모든 요청 에 응답 을 보 내 는 것 을 계산 하고 옮 겨 다 닙 니 다.
인 코딩 구현
<?php
$server = new Swoole\Http\Server('127.0.0.1', 9501, SWOOLE_BASE);
$result = [];
$server->on('request', function ($req, $resp) use(&$result) {
$resp->header('Content-Type', 'text/html; charset=UTF-8');
if ($req->server['request_method'] == 'GET') {
$resp->end('
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<form method="post" action="">
<input type="radio" value=" " name="result">
<input type="radio" value=" " name="result">
<input type="radio" value=" " name="result">
<button type="submit"> </button>
</form>
');
} else {
$result[$req->get['name']] = [$req, $resp];
if (count( $result) == 3) {
$out = '';
foreach($result as $arr) {
[$_req, $_resp] = $arr;
$out .= $_req->get['name'] ." : ". $_req->post['result']."<br />
";
}
foreach($result as $arr) {
[$_req, $_resp] = $arr;
$_resp->end($out);
}
$result = [];
}
}
});
$server->start();
실행 프로그램php game.php
크롬의 Tab 페이지 3 개 를 엽 니 다.또한 URL 에 들 어 오 는 name 은 각각 A,B,C 로 3 명의 사용 자 를 대표 합 니 다.
첫 번 째,두 번 째 결 과 를 제출 할 때 아무런 결과 도 되 돌려 주지 않 았 고 크롬 은 서버 가 결 과 를 되 돌려 주 기 를 기다 리 고 있 었 다.세 번 째 양식 을 제출 할 때 3 개의 Tab 페이지 가 동시에 결 과 를 되 돌려 줍 니 다.
어 려 운 문제 가 동시에 발생 하 다.
병렬 프로 그래 밍 은 직렬 프로 그래 밍 보다 강하 고 복잡 하 다.병렬 프로 그래 밍 은 이전 직렬 프로 그래 밍 에 없 었 던 새로운 문제 에 부 딪 힐 수 있 습 니 다.예 를 들 어:
데이터 동기 화 문제
문맥 관리 문제
시차 문제
이것 은 개발 자가 더욱 엄밀 한 공정 사고력 을 갖 추고 개발 자가 더욱 깊 은 프로 그래 밍 기 초 를 가 져 야 한다.
사고 가 바뀌다.
Swoole 은 기 존의 PHP 프로 그래 밍 모델 을 전복 시 켜 프로그래머 의 시 야 를 요청 한 처리 에 국한 되 지 않 고 데이터베이스 CURD 작업,인터페이스 호출 에 국한 되 지 않 습 니 다.Swoole 4 가 제공 하 는 프로 그래 밍 능력 과 결합 하면 메모리 공간 에서 각종 복잡 한 상호작용 을 실현 할 수 있다.
새로운 프로 그래 밍 모드 는 PHPer 가 온라인 게임,서버 시스템,스마트 홈,사물 인터넷 등 프로젝트 를 쉽게 실현 할 수 있 도록 한다.
이상 은 스 울 의 동시 프로 그래 밍 매력 에 대한 상세 한 내용 입 니 다.스 울 의 동시 프로 그래 밍 매력 에 대한 자 료 는 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
tcp 서버 만들기/** * Created by PhpStorm. * User: Administrator * Date: 2018/4/3 * Time: 16:00 */ //创建服务器 TCP服务器 $serv = new swoole_ser...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.