Swoole入门指南:PHP7安装Swoole详细教程(一)

比特星燧使
• 阅读 16192

好久未更新了,不是懒呃,是太忙啦!终于偷得浮生几日闲。
这一段时间准备为大家带来swoole的入门教程,感受一下php的nodeJs强悍之处。

所有的示例代码均放在了github上:learn-swoole

环境

这里不在使用apache做为web server。该用nginx + php-fpm,性能更强大,配置更方便。并且为了跟上php的步伐,也使用了比较新的php版本

  • [x] centos7

  • [x] php7.0.12

  • [x] nginx/1.10.2

  • [x] php-fpm

下载 swoole

首先下载swoole的源码包,这个操作很简单,没有太多说的。

wget -c https://github.com/swoole/swoole-src/archive/v2.0.6.tar.gz

解压: tar -zxvf v2.0.6.tar.gz

cd swoole-src-2.0.6/

编译&安装

使用phpize来生成php编译配置

./configure 来做编译配置检测

make进行编译,make install进行安装

命令执行:

[root@php7 swoole-src-2.0.6]# phpize
[root@php7 swoole-src-2.0.6]# ./configure
[root@php7 swoole-src-2.0.6]# make && make install

make install后,如果正确,会出现以下内容

[root@php7 swoole-src-2.0.6]# make install
Installing shared extensions:     /usr/lib64/php/modules/

这表示,在 /usr/lib64/php/modules/ 目录中,成功生成了 swoole.so 文件

修改配置文件

要能够使用该模块,还需要在 php.ini 文件中添加该模块。

这里需要注意,php7的模块配置文件均单独分开了。
php.ini 中可找到如下内容

;;;;

; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;

因此,如果你的php安装时,如果未特殊设置,可以在/etc/php.d 目录中,找到添加模块的配置文件。

进入到 cd /etc/php.d 目录,完成相关的配置

[root@php7 swoole-src-2.0.6]# vim swoole.ini

; Enable swoole extension module
extension=swoole.so

重启服务

新增php模块后,需要重新启动服务,才会生效,如果有时候restart后依然无效,请先关闭,再重新启动。

[root@php7 swoole-src-2.0.6]# systemctl restart nginx
[root@php7 swoole-src-2.0.6]# systemctl restart php-fpm

通过php -m或phpinfo()来查看是否成功加载了swoole

Swoole入门指南:PHP7安装Swoole详细教程(一)

swoole 代码的自动提示

安装好扩展后,就是使用的问题。由于没有代码的提示,有时候很不方便,github上有人已经提供了swoole代码提示的 ide-helper 。具体设置办法如下:

这里以: phpStorme 为例,download 代码到本地

git clone git@github.com:eaglewu/swoole-ide-helper.git ide-helper

按照图片内容设置
Swoole入门指南:PHP7安装Swoole详细教程(一)

经过以上步骤,可以在 phpStorme 中使用swoole了。并且提供代码提示。

简单测试

所有的测试代码均放在 这里

请将该代码 clone 到本地,方便观察效果。

git clone git@github.com:helei112g/learn-swoole.git

本节所提供的代码实例 demo1-serv

进入到测试代码目录,

然后在服务端使用 telnet 进行测试


  • 首先,运行服务端的监听程序

php demo1-serv.php

执行这个命令后,服务器会显示:

Client: Connect.

  • 另外开一个终端,使用 telnet 连接当前服务端监听的端口,并且输入一些文字,观察终端的变化。

[root@php7 ~]# telnet 127.0.0.1 9999
Hi!
Server: Hi!

这里只是进行简单的模拟回复。客户端发什么,服务器就回应什么消息。
退出telnet,观察服务器会显示什么
直接关闭窗口,或者:

[root@php7 ~]# Ctrl+]
[root@php7 ~]# telnet> quit

此时,会在服务侧看到:

Client: Close.

PS:如果测试环境没有安装 telnet ,请自行google安装。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Easter79 Easter79
3年前
swoole1.8.0+版本异步redis安装(本实例为swoole1.8.10版本)详解
Swoole1.8.0版本增加了对异步Redis客户端的支持,基于redis官方提供的hiredis库实现。Swoole提供了\_\_call魔术方法,来映射绝大部分Redis指令(本次安装实例为swoole1.8.10版本)编译安装hiredis(swoole1.8.10版本异步redis支持必须环境条件)使用Redis客户端,需要
Stella981 Stella981
3年前
Python Challenge Level 18
初学Python,挑战一下流行的PythonChallenge,很不幸,卡在了18关~~被字符字节码之间的转换搞得焦头烂额,不过终于搞定了还是很happy的~~~主要的问题就是16进制形式的字符如何转成字节码(注意:不是encoding)如:\'89','50','4e','47','0d','0a','1a','0a','00
Wesley13 Wesley13
3年前
swoole入门教程03
环境说明:系统:Ubuntu14.04(安装教程包括CentOS6.5)PHP版本:PHP5.5.10swoole版本:1.7.7stableGithub地址:https://github.com/LinkedDestiny/swooledoc(https://www.oschina.net/action/GoToLink?ur
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Easter79 Easter79
3年前
Swoole2.0内置协程并发测试
Swoole2.0是一个革命性的版本,它内置了协程的支持。与Go语言协程不同,Swoole协程完全不需要开发者添加任何额外的关键词,直接以过去最传统的同步阻塞模式编写代码,底层自动进行协程调度实现异步IO。使并发编程变得非常简单。最新的版本中,内置协程已支持PHP7,同时兼具了性能和并发能力,Swoole的强大超乎想象。本文基于Github最新的Sw
Stella981 Stella981
3年前
Linux日志安全分析技巧
0x00前言我正在整理一个项目,收集和汇总了一些应急响应案例(不断更新中)。GitHub地址:https://github.com/Bypass007/EmergencyResponseNotes本文主要介绍Linux日志分析的技巧,更多详细信息请访问Github地址,欢迎Star。0x01日志简介Lin