swoole简介及安装

 一、swoole介绍

1. swoole 简介

 swoolePHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

2. swoole提供的功能库。

swoole提供了哪些功能给我们用,以为我们用到哪些服务时,可以用swoole来帮我们实现。

  • http服务 ,编写一个简单的web server
  • TCP/UDP服务 ,编写一个消息接受处理系统。
  • 异步,可以异步的处理请求。
  • 并发 ,可以并发的处理同一个业务逻辑。
  • socketsocket通讯处理技术。
  • 毫秒级别定时器,可以在php中使用定时器了。
  • 协程,相比线程更稳定和好用。

 

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

 

    1、互联网

2、移动通信

3、企业软件

4、云计算

5、网络游戏

5、物联网(IOT

6、车联网

7、智能家居等领域

 

二、环境部署-php7安装

1、一键安装包方式

简单粗暴适合快速安装,前期自己容易编译错误的时候,直接按照教程快速安装,可以用这种,下面是地址

https://lnmp.org/install.html

2、编译安装

大体步骤:

   解压 tar

   configure  

   make

   make install

  

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

1、首先通过wget命令下载到指定文件

wget  http://cn2.php.net/distributions/php-7.2.4.tar.gz

  2、通过tar命令解压

    tar  -zxf   php-7.2.4.tar.gz

          3cd到目录利用configure 生成安装文件

在安装包下面一般有个configure, 是用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,具体可以通过configure  --help 查看相应的命令,这里只指定了php目录跟配置文件目录,其它任何扩展都没有编译

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc  --enable-fpm

 

        4、编译前检查

想要编译必须要安装相应的依赖扩展库可以提前的下载这里使用yum来进行扩展安装,一般需要以下几个扩展支持,否则会出现错误

yum  -y  install  gcc  gcc-c++ libxml2-devel m4 autoconf pcre-devel make cmake bison

 

 

 

 

 


 5、正式安装 make && make install

    

 

 

6CentOS下将php命令加入到环境变量中

 

开发过程中、需要使用到php命令执行程序、但是php命令没有在全局命令中;每次执行都需要加上全路径特别麻烦,把php命令添加到全局变量中,以后每次只用输入php可以了

 

centos7.2当中就可以使用下面的方式进行添加

vim /etc/profile文件

 

pathmunge  /usr/local/php/bin  配置环境变量

 

 

 

然后执行source /etc/profile 让当前的配置生效

 

 

7、最后配置文件拷贝到指定的目录

  php -i | grep Configuration 查询配置文件目录

将源码当中的配置文件指定到相应的目录

cp php.ini-development  /usr/local/php/etc/php.ini

 

8、扩展安装示例、通过yum安装依赖,然后在ext目录安装,同样的编译方式,比如curl的安装

yum install  libcurl-devel  

 

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

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

  wget  https://pecl.php.net/get/swoole-2.1.1.tgz

 

 

 

 

 

 

 

四、ide提示工具安装

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

 

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

 

 

 

 

 

 

五、sftp上传配置

 

 

 

/****************************服务端***************************/


//创建Server对象,监听 0.0.0.0:9501端口
$serv = new swoole_server("0.0.0.0", 9501);

$serv->set([
'worker_num' => 2, //设置进程
]);


//监听连接进入事件,有客户端连接进来的时候会触发
$serv->on('connect', function ($serv, $fd) {
echo "有新的客户端连接,连接标识为$fd" . PHP_EOL;;
});


//监听数据接收事件,server接收到客户端的数据后,worker进程内触发该回调
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
$serv->send($fd, "服务器给你发送消息了: ".$data);
});

//监听连接关闭事件,客服端关闭,或者服务器主动关闭
$serv->on('close', function ($serv, $fd) {
echo "编号为{$fd}的客户端已经关闭.".PHP_EOL;
});
//启动服务器
$serv->start();

 

 

 

/****************************客户端***************************/

 

// 创建一个同步非阻塞客户端tcp socket
// 第一个参数是表示socket的类型,有下面四种类型选择,这里选则tcp socket就好
/*
SWOOLE_SOCK_TCP 创建tcp socket
SWOOLE_SOCK_TCP6 创建tcp ipv6 socket
SWOOLE_SOCK_UDP 创建udp socket
SWOOLE_SOCK_UDP6 创建udp ipv6 socket
*/
// 第二个参数是同步还是异步
/*
SWOOLE_SOCK_SYNC 同步客户端
SWOOLE_SOCK_ASYNC 异步客户端
*/

$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
// 随后建立连接,连接失败直接退出并打印错误码
$client->connect('0.0.0.0', 9501) || exit("connect failed. Error: {$client->errCode}\n");
// 向服务端发送数据
$client->send("我要连接服务器");
// 从服务端接收数据
$response = $client->recv();
// 输出接受到的数据
echo $response . PHP_EOL;
// 关闭连接
$client->close();

 

posted @ 2018-04-13 16:48  galen-bin  阅读(486)  评论(0编辑  收藏  举报