作为程序员一定要保持良好的睡眠,才能好编程

swoole 实战(1)

发布时间:2019-03-22

近期在学习swoole ,那么如何使用swoole集合相关框架开发呢?


本系统在使用中,使用了 短信  这使用的是 阿里大于 短信平台





其实:我们长记住以下几点:

1、swoole启动后是常驻内存

2、获取到get、post、数据每次都要清除掉。

3、结合其他框架的时候,读取源码,看看是否一启动就缓存好多东西,如果是这样,会影响很多swoole的应用的。




下面我们就来看看:


使用swoole结合thinkphp框架,下载好以后,进行解压


目前我们使用http_server 进行静态页面访问, 以后 再做优化  使用另外一种方式进行访问。


thinkphp 有一个支持swoole的类库


可以使用composer来进行安装。


但是作为初学者不建议直接使用compser来安装封装好的类库。


静态文件.png



后台登录,我们采用目前流行的登录方式:

login.png

发送验证码:  获取手机号-》生成验证码-》保存到redis-》使用swoole的task任务 推送到阿里大鱼平台。


使用到阿里大鱼的短信验证码   采用第三方类库sdk拿过来,发送短信


获取到手机号以后,随机生成一个验证码 准备发送到手机上,并把生成的验证码 放在redis中。


然后 使用swoole的task任务 把发送验证码的服务 推送给 阿里大鱼的平台 ,进行发送验证码。


然后阿里大鱼平台 进行一系列的验证,并发送到手机上。



验证:获取到验证码后,使用redis 进行判断。



----------------------------------------------------------------------

----------------------------------------------------------------------


基于thinkphp适配swoole进行开发让Swoole完美支持TP5


让swoole的http_server完美支持tp5的写法


现在遇到的一个问题就是:

我开启了swoole的一个http服务,可以正常的访问静态目录下的文件,

但是无法访问的tp中控制器的方法。


那么应该怎么修改呢? 难道会启动多个服务?


启动 workerStart 的一个回调函数

tp.png


直接加载 


解释说明一下:结合不同的框架,需要单独读取一下程序的入口源码,


在worker启动的时候,只是引入程序的基本文件,


在request中,执行程序文件:

 t2.png




 使用swoole 结合 thinkphp中遇到的一些问题


今日使用swoole结合thinkphp开发项目,thinkphp默认是不支持swoole的,
如果要使用swoole中的http_server支持thinkphp中的请求是需要进行整合的,


swoole完美的结合thinkphp有两种方法:

1、直接在request方法中引入thinkphp的文件,并执行。
   这种方法简单,但是对于性能略微有些损耗。

2、可以在workerStart的回调函数中,引入thinkphp核心类,
  
   并在request中执行,


reqeust.png




上传图片:


基于 web uploader 进行图片的上传


基于swoole的图片上传,就怎么做的? 



场景:需要支持http的连接、以及webSocket 应该怎么做?


1、启动http_server 一个服务,然后再次启动一个webSocket 这样也是可以的。

   这种方法可以做到,但是不建议这样做。

2、启动webScoket 是基于httpServer的,因此我们启动一个webSocket后,httpServer也能同时使用



比如  我启动了 ws 服务器, 完美的支持了php的框架,但是我在上传图片的时候,需要注意什么事项呢?


同理我们上边的处理,只是处理了 Request 中的  get post  server中的方法,但是没有处理 files 这个方法,因此我们需要添加上。


request.png

放在request的回调函数中。

$_FILES=[];
if(isset($request->file)){
    foreach($request->file as $key=>$val){
        $_FILES[$key]=$val;
    }
}



应该怎么做?












赛况


数据

聊天室