>  기사  >  백엔드 개발  >  PHP는 Swoole을 사용하여 클라이언트 데이터를 실시간으로 업데이트합니다.

PHP는 Swoole을 사용하여 클라이언트 데이터를 실시간으로 업데이트합니다.

*文
*文원래의
2017-12-28 15:30:595119검색

이 글에서는 주로 PHP에서 swoole을 사용하여 클라이언트 데이터를 실시간으로 업데이트하는 관련 정보를 소개합니다. 그것이 모두에게 도움이 되기를 바랍니다.

실시간으로 목록을 업데이트하려는 경우 전통적인 방법은 폴링을 사용하는 것입니다. 웹을 예로 들면, Ajax를 통해 주기적으로 서버에 요청을 하고, 데이터를 얻어서 페이지에 표시하게 됩니다. 이 방법은 구현이 간단하지만 자원이 낭비된다는 단점이 있습니다.

HTTP1.1에는 웹소켓에 대한 지원이 새로 추가되어 수동 디스플레이가 활성 알림으로 변환될 수 있습니다. 즉, websocket을 통해 서버와의 지속적인 연결이 유지되며, 데이터가 변경되면 서버는 클라이언트에 데이터가 업데이트되었음을 ​​알리고 새로 고치는 등의 작업을 수행합니다. 이렇게 하면 불필요한 수동 요청이 많이 제거되고 서버 리소스가 절약됩니다.

웹스코켓 프로그램을 구현하려면 먼저 HTML5를 지원하는 브라우저를 사용해야 합니다


if(ws === null){
var wsServer = 'ws://'+ location.hostname +':8888';
ws = new WebSocket(wsServer);
ws.onopen = function(){
console.log("socket连接已打开");
};
ws.onmessage = function(e){
console.log("message:" + e.data);
};
ws.onclose = function(){
console.log("socket连接已断开");
};
ws.onerror = function(e){
console.log("ERROR:" + e.data);
};
//离开页面时关闭连接
$(window).bind('beforeunload',function(){
ws.close();
}
);
}


이렇게 클라이언트가 구현되지만 문제는 아직 끝나지 않았습니다. 위 코드는 연결, 대화, 종료 등의 기본적인 동작만 수행합니다. 서버와 통신하려면 보다 구체적인 솔루션이 있어야 합니다. 예를 들어, 메시지를 수신하면 유형을 결정하고 추가 작업을 수행합니다.

서버: 여기서는 PHP 서버에서 웹소켓 개발을 위해 Swoole을 사용합니다. PHP 웹소켓 개발을 위해 Swoole을 사용하는 것은 매우 간단하며 httpserver도 지원합니다.


$server = new swoole_websocket_server("0.0.0.0", 8888);
$server->on('open', function (swoole_websocket_server $server, $request) {
echo "server: handshake success with fd{$request->fd}\n";
});
$server->on('message', function (swoole_websocket_server $server, $frame) {
echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
$server->push($frame->fd, "this is server");
});
$server->on('close', function ($ser, $fd) {
echo "client {$fd} closed\n";
});
$server->start();


swoole은 여기에서 설치 방법을 참조할 수 있습니다. php

에 swoole 확장을 설치하는 방법 관련 권장 사항:

thinkphp5 및 swoole은 비동기를 달성하기 위해 SMTP를 사용합니다. 대량메일 발송 예시

Swoole 개발 핵심 포인트 소개

php 비동기 멀티스레디드 Swoole 활용 예시

위 내용은 PHP는 Swoole을 사용하여 클라이언트 데이터를 실시간으로 업데이트합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.