Swoole 初识 - wangyulu
官方定义:
Swoole:重新定义PHP
PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。
Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网、车联网、智能家居等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。
swoole 扩展安装及案例来源:http://wiki.swoole.com/wiki/page/6.html
简单案例:
<span style="color: #000000;">php </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Server { </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$serv</span><span style="color: #000000;">; </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> __construct() { </span><span style="color: #800080;">$this</span>->serv = <span style="color: #0000ff;">new</span> swoole_server("0.0.0.0", 9501<span style="color: #000000;">); </span><span style="color: #800080;">$this</span>->serv->set(<span style="color: #0000ff;">array</span><span style="color: #000000;">( </span>'worker_num' => 8, 'daemonize' => <span style="color: #0000ff;">false</span>, 'max_request' => 10000, 'dispatch_mode' => 2, 'debug_mode' => 1<span style="color: #000000;"> )); </span><span style="color: #800080;">$this</span>->serv->on('Start', <span style="color: #0000ff;">array</span>(<span style="color: #800080;">$this</span>, 'onStart'<span style="color: #000000;">)); </span><span style="color: #800080;">$this</span>->serv->on('Connect', <span style="color: #0000ff;">array</span>(<span style="color: #800080;">$this</span>, 'onConnect'<span style="color: #000000;">)); </span><span style="color: #800080;">$this</span>->serv->on('Receive', <span style="color: #0000ff;">array</span>(<span style="color: #800080;">$this</span>, 'onReceive'<span style="color: #000000;">)); </span><span style="color: #800080;">$this</span>->serv->on('Close', <span style="color: #0000ff;">array</span>(<span style="color: #800080;">$this</span>, 'onClose'<span style="color: #000000;">)); </span><span style="color: #800080;">$this</span>->serv-><span style="color: #000000;">start(); } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> onStart(<span style="color: #800080;">$serv</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">echo</span> "Start\n"<span style="color: #000000;">; } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> onConnect(<span style="color: #800080;">$serv</span>, <span style="color: #800080;">$fd</span>, <span style="color: #800080;">$from_id</span><span style="color: #000000;">) { </span><span style="color: #800080;">$serv</span>->send(<span style="color: #800080;">$fd</span>, "Hello {<span style="color: #800080;">$fd</span>}!"<span style="color: #000000;">); } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> onReceive(swoole_server <span style="color: #800080;">$serv</span>, <span style="color: #800080;">$fd</span>, <span style="color: #800080;">$from_id</span>, <span style="color: #800080;">$data</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">echo</span> "Get Message From Client {<span style="color: #800080;">$fd</span>}:{<span style="color: #800080;">$data</span>}\n"<span style="color: #000000;">; } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> onClose(<span style="color: #800080;">$serv</span>, <span style="color: #800080;">$fd</span>, <span style="color: #800080;">$from_id</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">echo</span> "Client {<span style="color: #800080;">$fd</span>} close connection\n"<span style="color: #000000;">; } } </span><span style="color: #008000;">//</span><span style="color: #008000;"> 启动服务器</span> <span style="color: #800080;">$server</span> = <span style="color: #0000ff;">new</span> Server();
로그인 후 복사
<span style="color: #000000;">php </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Client { </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$client</span><span style="color: #000000;">; </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> __construct() { </span><span style="color: #800080;">$this</span>->client = <span style="color: #0000ff;">new</span><span style="color: #000000;"> swoole_client(SWOOLE_SOCK_TCP); } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> connect() { </span><span style="color: #0000ff;">if</span> (!<span style="color: #800080;">$this</span>->client->connect("127.0.0.1", 9501, 1<span style="color: #000000;">)) { </span><span style="color: #0000ff;">echo</span> "Error: {<span style="color: #800080;">$fp</span>->errMsg}[{<span style="color: #800080;">$fp</span>->errCode}]\n"<span style="color: #000000;">; } </span><span style="color: #800080;">$message</span> = <span style="color: #800080;">$this</span>->client-><span style="color: #000000;">recv(); </span><span style="color: #0000ff;">echo</span> "Get Message From Server:{<span style="color: #800080;">$message</span>}\n"<span style="color: #000000;">; </span><span style="color: #008080;">fwrite</span>(STDOUT, "请输入消息:"<span style="color: #000000;">); </span><span style="color: #800080;">$msg</span> = <span style="color: #008080;">trim</span>(<span style="color: #008080;">fgets</span><span style="color: #000000;">(STDIN)); </span><span style="color: #800080;">$this</span>->client->send(<span style="color: #800080;">$msg</span><span style="color: #000000;">); } } </span><span style="color: #800080;">$client</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Client(); </span><span style="color: #800080;">$client</span>->connect();
로그인 후 복사
分别打开两个终端输入:php server.php php client.php 即可看到效果!
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
Repo : 팀원을 부활시키는 방법
4 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
헬로 키티 아일랜드 어드벤처 : 거대한 씨앗을 얻는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
스플릿 소설을이기는 데 얼마나 걸립니까?
3 몇 주 전
By DDD
R.E.P.O. 파일 저장 위치 : 어디에 있고 그것을 보호하는 방법은 무엇입니까?
3 몇 주 전
By DDD

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7313
9


자바 튜토리얼
1625
14


Cakephp 튜토리얼
1348
46


라라벨 튜토리얼
1260
25


PHP 튜토리얼
1207
29

