swoole入门 初识

up 第一次初识 swoole 是在2017年11月份,还是从朋友那头得知的当时他在做一个直播的项目为此脑壳疼了好久,我也是从哪天起打开了新世界的大门发现PHP 不只如此。说起来惭愧直到2019年4月份才真正的开始接触学习 swoole,所以今后会将自己的成长之路记录下来加油

swoole介绍

让我们先来了解下swoole

  1. swoole 简介  swoole是PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。
  2. swoole提供的功能库 swoole提供了哪些功能给我们用,以为我们用到哪些服务时,可以用swoole来帮我们实现。
    • http服务 ,编写一个简单的web server。
    • TCP/UDP服务 ,编写一个消息接受处理系统。
    • 异步,可以异步的处理请求。
    • 并发 ,可以并发的处理同一个业务逻辑。
    • socket,socket通讯处理技术。
    • 毫秒级别定时器,可以在php中使用定时器了。
    • 协程,相比线程更稳定和好用。

    如果你的业务中,有用到以上等特性,你又在用使用php,那么完全可以用swoole来完成了,再具体点的场景如下:

    1. 互联网
    2. 移动通信
    3. 企业软件
    4. 云计算
    5. 网络游戏
    6. 物联网(IOT)
    7. 车联网
    8. 智能家居等领域
  3. swoole的框架
    • Hyperf 是基于 Swoole 4.4+ 实现的高性能、高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均基于 PSR 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是 可替换 与 可复用 的。框架组件库除了常见的协程版的 MySQL 客户端、Redis 客户端,还为您准备了协程版的 Eloquent ORM、WebSocket 服务端及客户端、JSON RPC 服务端及客户端、GRPC 服务端及客户端、Zipkin/Jaeger (OpenTracing) 客户端、Guzzle HTTP 客户端、Elasticsearch 客户端、Consul 客户端、ETCD 客户端、AMQP 组件、Apollo 配置中心、阿里云 ACM 应用配置管理、ETCD 配置中心、基于令牌桶算法的限流器、通用连接池、熔断器、Swagger 文档生成、Swoole Tracker、Blade 和 Smarty 视图引擎、Snowflake 全局ID生成器 等组件,省去了自己实现对应协程版本的麻烦。Hyperf 还提供了 基于 PSR-11 的依赖注入容器、注解、AOP 面向切面编程、基于 PSR-15 的中间件、自定义进程、基于 PSR-14 的事件管理器、Redis/RabbitMQ 消息队列、自动模型缓存、基于 PSR-16 的缓存、Crontab 秒级定时任务、Translation 国际化、Validation 验证器 等非常便捷的功能,满足丰富的技术场景和业务场景,开箱即用。
    • Swoft 首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM,全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield, 有类似 Go 语言的协程、灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等,可以用于构建高性能的Web系统、API、中间件、基础服务等等。
    • EasySwoole EasySwoole 是一款基于Swoole Server 开发的常驻内存型PHP框架,专为API而生,摆脱传统PHP运行模式在进程唤起和文件加载上带来的性能损失。EasySwoole 高度封装了Swoole Server 而依旧维持Swoole Server 原有特性,支持同时混合监听HTTP、自定义TCP、UDP协议,让开发者以最低的学习成本和精力编写出多进程,可异步,高可用的应用服务。
    • SwooleDistributed SwooleDistributed 老牌Swoole框架拥有最完善的开发工具以及最强大的功能,首创SDHelper开发者工具包和开发者调试命令集,可以进行单元测试,捕获客户端流量分析,可视化的进行远程断点联调,还具备代码覆盖率检测的功能(swoole与xdebug扩展不兼容,SDHelper无需xdebug扩展),并且内置组件极其丰富(类MQTT强悍的订阅发布/Actor模型/内存高速缓存/事件派发/进程管理/定时任务/AMQP任务调度/后台监控/集群/微服务/RPC/异步连接池/自定义命令等等),开发者可以直接使用加快开发进度。几乎所有的功能都支持集群化,单机切换到集群无需对代码做任何的修改。如果业务开发比较复杂比如(游戏开发)那么SD框架将是你的不二之选。

环境部署-php7安装

一键安装包方式

简单粗暴适合快速安装,前期自己容易编译错误的时候,直接按照教程快速安装,可以用这种,up只知道两个一键安装

lnmp oneinstack

这里up 推荐用 oneinstack wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --php_option 7 --phpcache_option 1 --php_extensions zendguardloader,ioncube,sourceguardian,gmagick,fileinfo,imap,ldap,phalcon,yaf,redis,memcached,memcache,mongodb,swoole,xdebug --phpmyadmin --db_option 2 --dbinstallmethod 1 --dbrootpwd oneinstack --pureftpd --redis --memcached --iptables --reboot

编译安装

大体步骤:

  1. 解压
  2. configure
  3. make
  4. make install

生产环境下,自己掌握如何编译,并且安装扩展

  1. 首先通过wget命令下载到指定文件 Wget http://cn2.php.net/distributions/php-7.2.15.tar.gz
  2. 通过tar命令解压 tar -zxf php-7.2.15.tar.gz
  3. 进入目录利用 configure 生成安装文件 在安装包下面一般有个 configure, 是用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,具体可以通过 configure --help 查看相应的命令,这里只指定了php目录跟配置文件目录,开放了其中一部分扩展 ./configure --prefix=/usr/local/php \--prefix=/usr/local/php \--with-config-file-path=/usr/local/php/etc \-with-libxml-dir=/usr \--with-mhash \--with-openssl \--with-mysqli=shared,mysqlnd \--with-pdo-mysql=shared,mysqlnd \--with-zlib \--enable-zip \--enable-inline-optimization \--disable-debug \--disable-rpath \--enable-shared \--enable-xml \--enable-bcmath \--enable-shmop \--enable-sysvsem \--enable-mbregex \--enable-mbstring \--enable-pcntl \--enable-sockets \--without-pear \--with-gettext \--enable-session
  4. 编译前检查 想要编译必须要安装相应的依赖扩展库可以提前的下载这里使用yum来进行扩展安装,一般需要以下几个扩展支持,否则会出现错误 yum -y install gcc gcc-c++ libxml2-devel m4 autoconf pcre-devel make cmake bison openssl openssl-devel
  1. 正式安装 make && make install
  2. CentOS下将php和mysql命令加入到环境变量中 开发过程中、需要使用到php命令执行程序、但是php命令没有在全局命令中;每次执行都需要加上全路径特别麻烦,把php命令添加到全局变量中,以后每次只用输入php可以了在centos7.2当中就可以使用下面的方式进行添加 vim /etc/profile 文件然后执行 source /etc/profile 让当前的配置生效
  3. 最后配置文件拷贝到指定的目录 php -i | grep Configuration 查询配置文件目录 将源码当中的配置文件指定到相应的目录 cp php.ini-development /usr/local/php/etc/php.ini
  4. 扩展安装示例、通过yum安装依赖,然后在ext目录安装,同样的编译方式,比如curl的安装 yum install libcurl-devel

环境部署-swoole源码编译安装

Swoole安装方式跟php安装方式是一样的,下载解压、编译

# 下载
git clone https://github.com/swoole/swoole-src.git

#解压
cd swoole-src

# 编译安装
phpize
./configure
make && make install

ide提示工具

安装好之后呢。如果你还需要对你想对你的编辑器,比如:phpstrom 对swoole的代码提示功能,就可以下载帮助文件:https://github.com/swoole/ide-helper

点击setting选择languages 点击+号添加我们下载的文件

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Docker是什么?

    风清醉
  • laravel 学习之路 安装

    环境的安装网上很多教程我就不多描述了,最新版是 Laravel 6 让我们来大胆的学习最新版本

    风清醉
  • 《数据结构与算法》Day.1 最大子列和

    ———————————————— 版权声明:本文为博主「Sofar」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 ...

    风清醉
  • k8s实践(十):监控工具Weave Scope详解

    Weave Scope自动生成应用程序的映射,使您能够直观地理解、监视和控制基于容器化微服务的应用程序。

    loong576
  • OpenShift的容器镜像(第1部分):目标

    这是我在EMEA红帽技术2017交流会议(Red Hat Tech Exchange 2017)上所做的文字记录,这是一个由所有的Red Hat解决方案架构师和...

    神话_Tyrannosaurus
  • Docker学习笔记之使用 Docker Hub 中的镜像

    自己编写 Dockerfile 能够很好的实现我们想要的程序运行环境,不过如果装有我们想要环境的镜像已经由热心的开发者构建好并共享在 Docker Hub 上,...

    Jetpropelledsnake21
  • 用virtualenv建立多个Python独立开发环境

    virtualenv创建一个拥有自己安装目录的环境, 这个环境不与其他虚拟环境共享库, 能够方便的管理python版本和管理python库。主要解决不同项目之...

    听城
  • jquery的扩展方法介绍

      最近一直在写js,这其中也少不了一位js的主角了jQuery,下面介绍的是jQuery的一些扩展,也就是jQuery的扩展方法,jQuery的扩展方法有两种...

    Java中文社群_老王
  • 不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!

    第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环。在这部分内容中,我会解释静态链接和动态链接的区别,它们对...

    米开朗基杨
  • Centos7使用yum安装 pip 、ipython

    Devops海洋的渔夫

扫码关注云+社区

领取腾讯云代金券