Swoole - 入门 - 使用异步客户端(MySQL,Redis,Http)

程序员日记      2019-09-20
PHP提供的MySQL、CURL、Redis等客户端是同步的,会导致服务器程序发生阻塞。Swoole提供了常用的异步客户端组件,来解决此问题。编写纯异步服务器程序时,可以使用这些异步客户端。异步客户端可以配合使用SplQueue实现连接池,以达到长连接复用的目的。在实际项目中可以使用PHP提供的Yield/Generator语法实现半协程的异步框架。也可以基于Promises简化异步程序的编写。MySQL$db=newSwoole\MySQL;$server=array(  ...
标签:
774 人看过

Swoole - 入门 - 网络通信协议设计

程序员日记      2019-09-20
为什么需要通信协议TCP协议在底层机制上解决了UDP协议的顺序和丢包重传问题。但相比UDP又带来了新的问题,TCP协议是流式的,数据包没有边界。应用程序使用TCP通信就会面临这些难题。因为TCP通信是流式的,在接收1个大数据包时,可能会被拆分成多个数据包发送。多次Send底层也可能会合并成一次进行发送。这里就需要2个操作来解决:分包:Server收到了多个数据包,需要拆分数据包合包:Server收到的数据只是包的一部分,需要缓存数据,合并成完整的包所以TCP网络通信时需要设定通信协议。常见的TC...
标签:
724 人看过

Swoole - 入门 - 创建异步TCP客户端

程序员日记      2019-09-20
创建异步TCP客户端<?php $client=newswoole_client(SWOOLE_SOCK_TCP,SWOOLE_SOCK_ASYNC);//注册连接成功回调$client->on("connect",function($cli){  $cli->send("helloworld\n");});//注册数据接收回调$client->on("receive",function($cli,$data){  ech...
标签:
679 人看过

Swoole - 入门 - 创建同步TCP客户端

程序员日记      2019-09-19
创建同步TCP客户端client.php<?php$client=newswoole_client(SWOOLE_SOCK_TCP);//连接到服务器if(!$client->connect('127.0.0.1',9501,0.5)){  die("connectfailed.");}//向服务器发送数据if(!$client->send("helloworld")){  die("sendfailed.");}//从服务器接收数据$d...
标签:
703 人看过

Swoole - 入门 - 创建websocket服务器

程序员日记      2019-09-19
创建websocket服务器server.php<?php//创建websocket服务器对象,监听0.0.0.0:9504端口$ws=newswoole_websocket_server("0.0.0.0",9502);//监听WebSocket连接打开事件$ws->on('open',function($ws,$request){  var_dump($request->fd,$request->get,$request->server);&...
标签:
674 人看过

Swoole - 入门 - 创建HTTP服务器

程序员日记      2019-09-19
创建HTTP服务器server.php<?php$http=newSwoole\Http\Server("0.0.0.0",9503);$http->on('request',function($request,$response){//Chrome会产生额外的一次请求,/favicon.ico,可以在代码中响应404错误。   if($request->server['path_info']=='/favicon.ico'||$request-&...
标签:
729 人看过

Swoole - 入门 - 创建UDP服务器

程序员日记      2019-09-18
创建UDP服务器server.php<?php//创建Server对象,监听192.168.0.99:9502端口,类型为SWOOLE_SOCK_UDP$serv=newswoole_server("192.168.0.99",9502,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);//监听数据接收事件$serv->on('Packet',function($serv,$data,$clientInfo){  $serv->sendto($...
标签:
706 人看过

Swoole - 入门 - 创建TCP服务器

程序员日记      2019-09-18
创建TCP服务器server.php<?php//创建Server对象,监听127.0.0.1:9501端口$serv=newSwoole\Server("192.168.0.99",9501);//监听连接进入事件$serv->on('Connect',function($serv,$fd){  echo"Client:Connect.\n";});//监听数据接收事件$serv->on('Receive',function($serv,$fd,$from...
标签:
741 人看过

Swoole - 入门 - 安装

程序员日记      2019-09-18
基础运行环境保证PHP版本大于等于7.1保证Swoole拓展版本大于等于1.9.23或者是2.1.0目前最新的是4.4.5需要pcntl拓展的任意版本使用Composer作为依赖管理工具linux环境 CentOS6.5或更高版本操作系统环境检查gcc--versiong++--version升级gcc(已经升级的请跳过)本文使用的centos6.10版本虚拟机做演示自带的版本是4.4.6的,太低了需要升级1.下载wgetwgethttp://ftp.gnu.org/gnu/gcc/g...
标签:
786 人看过