swoole基础-swoole的安装与升级
学到这里,我们几乎是“连下五城”,前文讲述了进程/线程,IO模型,TCP/IP协议,说好的学习swoole呢?
今天我们就来揭开swoole的面纱。
swoole其实几乎涉及到网络开发的方方面面,但是这些都是php所不具备的。前文介绍那么多废话,也是考虑部分基础十分薄弱的同学。
我们再来看下swoole是什么,引用官网的一句话:
Swoole是PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole虽然是标准的PHP扩展,实际上与普通的扩展不同。普通的扩展只是提供一个库函数。而swoole扩展在运行后会接管PHP的控制权,进入事件循环。当IO事件发生后,swoole会自动回调指定的PHP函数。
感觉很很难很高大上的样子。本文先来看下swoole是怎么安装的。
准备
windows用户可以使用cygwin环境来学习swoole,但是会有很多问题,下面我们主要介绍下linux环境下swoole的安装。
php版本推荐php5.4+,当然php7也是没有问题的。
后面我们大部分应用都将基于mac+php7。
此外,你应该保证系统中安装了如下软件
gcc-4.4+ make autoconf
gcc版本不够或者上述软件有一项未安装,下面的操作就没必要往下看了。
下面介绍两种安装的方式,随意选择
编译安装
swoole作为php的扩展,安装方法自然跟其他扩展没有差别。来看下具体的步骤
1、下载最新的稳定版,以pecl官网为准,我们看到当前最新的版本是1.9.6,后面针对swoole的学习,我们也以这个版本为准,如果本地已经安装过swoole了,但是版本不一致,可以直接看下面关于swoole升级的讲解。此外,由于swoole还很年轻,各个版本中可能会与我们所讲述的配置有所冲突,建议尽可能的保证你的版本跟我们一致,除非你知道版本本身的差异。
我们切换到 /usr/local/src 目录,你也可以下载到你期望的路径。利用wget下载,提示wget不是命令的请先下载一下这个命令
wget http://pecl.php.net/get/swoole-1.9.6.tgz
2、随后利用tar命令解压,同样tar命令不存在的自行下载
tar zxvf swoole-1.9.6.tgz
3、切换到 swoole-1.9.6 目录
cd swoole-1.9.6
4、找到phpize所在路径,注意要找你要给具体php版本安装的那个phpize,比如我的php源码在 /usr/local/opt/php70/ 目录,phpize路径就是 /usr/local/opt/php70/bin/phpize,在不确保终端下的phpize是哪个版本的php时候,建议指定绝对路径
/usr/local/opt/php70/bin/phpize
终端下输入上面的命令后回车即可
5、检查&&编译&&安装
./configure make sudo make install
依次输入上述命令进行操作。
PECL安装
编译安装的过程稍微有一些麻烦,swoole也是pecl的项目,所以,我们还可以通过pecl进行一键安装
pecl install swoole
如果以上步骤一切正常的话,即表示swoole已经成功的安装了。
成功之后,我们打开php.ini(不知道配置文件在哪的回去再把CLI看一遍),把swoole.so加入到文件最后
extension=swoole.so
随后通过命令php -m查看swoole是否被正确的安装
$ php -m | grep swoole swoole
能看到结果即表示安装成功了,当然这是在我们安装过程中一切顺利的情况下进行的。
如果安装过程中出现了失败,下面留言反馈哦。
swoole升级
swoole现在还处于发展中,可能我们还没学完,新的版本又要出来了。有同学要说了,过段时间我估计就忘记现在安装的swoole的版本是多少了,这个怎么办?
我们可以通过 php --ri 命令查看swoole版本
php --ri swoole | grep Version #结果 Version => 1.9.6
如果后期发现有新的版本发布了,怎么升级swoole呢?
编译升级
编译升级,只需要从pecl官网下载最新的稳定版,按照我们一开始的编译安装步骤再走一遍就完事了。之前安装的版本不需要过问,这就相当于重新安装一次新版本就好了。
友情提醒,尽可能的下载稳定版,非稳定版可能会发生很多意外的事。
pecl升级
这个更简单,一条命令搞定
pecl upgrade swoole
下一节我们准备讲些下swoole的简单应用,同时也将是我们最后实例的基础,期待的留个言,说不定我能提前写好发文哦。
- 评论区
![头像](/css/images/head.png)