使用PHP+Swoole做为网络通讯框架,可使企业IT研发团队的效率大大提高,更加专一于开发创新产品。 Swoole底层内置了异步非阻塞、多线程的网络IO服务器。PHP程序员仅需处理事件回调便可,无需关心底层。程序员
与Nginx/Tornado/Node.js等全异步的框架不一样,Swoole既支持全异步,也支持同步。Swoole虽然是标准的PHP扩展,实际上与普通的扩展不一样。普通的扩展只是提供一个库函数。而swoole扩展在运行后会接管PHP的控制权,进入事件循环。当IO事件发生后,swoole会自动回调指定的PHP函数。web
swoole_server是异步服务器,因此是经过监听事件的方式来编写程序的。当对应的事件发生时底层会主动回调指定的PHP函数。如当有新的TCP链接进入时会执行onConnect事件回调,当某个链接向服务器发送数据时会回调onReceive函数。UDP服务器与TCP服务器不一样,UDP没有链接的概念。数据库
启动Server后,客户端无需Connect,直接能够向Server监听的9502端口发送数据包。对应的事件为onPacket。Http服务器只须要关注请求响应便可,因此只须要监听一个onRequest
事件。当有新的Http请求进入就会触发此事件。事件回调函数有2个参数,一个是$request对象,包含了请求的相关信息,如GET/POST请求的数据。另一个是response对象,对request的响应能够经过操做response对象来完成。$response->end()方法表示输出一段HTML内容,并结束此请求。WebSocket服务器是创建在Http服务器之上的长链接服务器,客户端首先会发送一个Http的请求与服务器进行握手。apache
握手成功后会触发onOpen事件,表示链接已就绪,onOpen函数中能够获得$request
对象,包含了Http握手的相关信息,如GET参数、Cookie、Http头信息等。创建链接后客户端与服务器端就能够双向通讯了。 * 客户端向服务器端发送信息时,服务器端触发onMessage
事件回调 * 服务器端能够调用$server->push()
向某个客户端(使用$fd标识符)发送消息。swoole提供了相似JavaScript的setInterval/setTimeout异步高精度定时器,粒度为毫秒级。在Server程序中若是须要执行一下很耗时的操做,好比一个聊天服务器发送广播,Web服务器中发送邮件。若是直接去执行这些函数就会阻塞当前进程,致使服务器响应变慢。缓存
Swoole提供了异步任务处理的功能,能够投递一个异步任务到TaskWorker进程池中执行,不影响当前请求的处理速度。建立一个TCP的同步客户端,此客户端能够用于链接到咱们第一个示例的TCP服务器。向服务器端发送一个hello world
字符串,服务器会返回一个 Server: hello world
字符串。这个客户端是同步阻塞的,connect/send/recv 会等待IO完成后再返回。同步阻塞操做并不消耗CPU资源,IO操做未完成当前进程会自动转入sleep模式,当IO完成后操做系统会唤醒当前进程,继续向下执行代码。基于Swoole扩展开发的PHP web server&应用服务器, 内置框架。提供统一注册树,数据库操做,模板,Cache,日志,队列,上传管理,用户管理等丰富的功能特性。服务器
swoole框架相比apache/fpm,主要是节省PHP框架和全局对象每次请求建立销毁带来的性能损耗。若是你的PHP代码是裸echo的方式,swoole框架并无性能优点。swoole框架给程序员提供了最大的空间,与http请求无关的全局对象只须要构造一次。程序中还能够对某些对象和数据进行缓存控制。9501就是swoole服务器监听的地址。root设置为静态文件的目录。当请求静态文件是由Nginx/Apache直接处理,当请求的文件不存在时,发送给Swoole服务器,来进行处理。swoole