Swoole从入门到入土(1)——入坑
入坑一个话题,总得有入坑的理由。有好多话题可供选择,但是思来想去,对于PHPer进阶与其急着去掌握一门新的语言,匆忙地踏足一个新的知识体系,还不如先把php圈子的技能点攒齐了。
话说Swoole诞生之前,php是世界上最好的语言。但很可惜php语言无法支持长连接,始终是个遗憾。而自从Swoole诞生之后,php晋升为太阳系最好的语言。Swoole提供给了php长连接、协程、异步任务、微服务的能力,弥补了php短板,让php有了在即时通讯、物联网、区块链的领域中发力的可能。虽然在Swoole的生态圈子里发生了一些不太友好的事情,但是神仙吵架丝毫不影响Swoole的优秀。接下来,做好准备,让我们一起徜徉在知识的海洋。
在这一系列的文章中,我们会假设大家已经有良好的php基础,对于扩展的编译已经熟练掌握。如果对于相关的知识点不甚了解,可以随时联系博主。
另外,博主使用的操作系统是CentOS 7.5,PHP版本号是7.3.15
这一篇里,我们要了解两个问题:安装Swoole 和 写出一个Swoole的Hello world。
1、安装Swoole
安装Swoole有两种方式,即编译成php的扩展,或者在编译php的过程过静态编译到php中。两种方法都可以让php顺利使用上Swoole。当然,为了编译方便与灵活,笔者会采用扩展的方式进行编译。
因为Swoole自身要求PHP版本号>7.1,gcc版本号>4.8,所以如果需要升级gcc的小伙伴可以运行:
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
接着,需要到以下三个地方,下载Swoole扩展的源代码(任选其一):
https://github.com/swoole/swoole-src/releases
http://pecl.php.net/package/swoole
https://gitee.com/swoole/swoole
开始编译,编译过程就是编译的老套路。请看以下栗子:
#简单编译
#进入swoole源码目录
phpize
./configure --with-php-config=/path/to/php-config
make
make install #高级编译
#进入swoole源码目录
phpize
./configure --with-php-config=/path/to/php-config --enable-openssl --enable-http2
make
make install
编译完成之后,进入php.ini中添加extension=swoole.so即可。
为了确认php是否成功载入了swoole扩展,可以执行php -m | grep swoole查看结果。如下图:

2、写出Swoole的Hello World
在写出Swoole的Hello World之前,需要先解决一个问题:在phpstorm中添加swoole的自动提示。
1) 下载https://github.com/wudi/swoole-ide-helper,解压得到目录swoole-ide-helper
2) PhpStorm的菜单项中找到File->Settings->Languages & Frameworks->PHP->inclue path,将swoole-ide-helper目录加入即可。
接下来,我们创建一个文件命令为swoole.php,并从利用Swoole写一段很简单的的http服务代码:
<?php
$http = new Swoole\Http\Server("0.0.0.0", 9501); $http->on("start", function ($server) {
echo "Swoole http server is started\n";
}); $http->on("request", function ($request, $response) {
$response->header("Content-Type", "text/plain");
$response->end("Hello World\n");
}); $http->start();
现在我们还不需要详细知识这段代码每一句什么作用,只需要先了解这段代码实现了一个侦听在9501上的很简单的http服务。
我们运行一下这段代码php swoole.php,之后我们通过浏览器可以看到以下界面:

好了,这一节到这里就大功告成了。之后我们会逐一讨论Swoole这东西可以为我们带来什么不可思议的功能。今天就先到这里吧:)
--------------------------- 我是可爱的分割线 ----------------------------
最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。
Swoole从入门到入土(1)——入坑的更多相关文章
- webpack入坑之旅(三)webpack.config入门
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- webpack入坑之旅(二)loader入门
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack 在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- Angular 从入坑到挖坑 - Angular 使用入门
一.Overview angular 入坑记录的笔记第一篇,完成开发环境的搭建,以及如何通过 angular cli 来创建第一个 angular 应用.入坑一个多星期,通过学习官方文档以及手摸手的按 ...
- Angular 从入坑到挖坑 - Router 路由使用入门指北
一.Overview Angular 入坑记录的笔记第五篇,因为一直在加班的缘故拖了有一个多月,主要是介绍在 Angular 中如何配置路由,完成重定向以及参数传递.至于路由守卫.路由懒加载等&quo ...
- webpack入坑之旅(六)配合vue-router实现SPA
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- webpack入坑之旅(五)加载vue单文件组件
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- webpack入坑之旅(四)扬帆起航
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- webpack入坑之旅(一)不是开始的开始
最近学习框架,选择了vue,然后接触到了vue中的单文件组件,官方推荐使用 Webpack + vue-loader构建这些单文件 Vue 组件,于是就开始了webpack的入坑之旅.因为原来没有用过 ...
- 维多利亚的秘密 golang入坑系统
原文在gitbook,字字原创,版权没有,转载随意. 在写本文的前一天,2017维密在上海开始了. 为了纪念屌丝界的盛世,特为本节起名维多利亚的秘密.现在的社会,要想出名只有抓眼球.所以写份技术文章, ...
- 大神都在看的RxSwift 的完全入坑手册
大神都在看的RxSwift 的完全入坑手册 2015-09-24 18:25 CallMeWhy callmewhy 字号:T | T 我主要是通过项目里的 Rx.playground 进行学习和了解 ...
随机推荐
- 【java】 向上转型的运用
应用 :求面积 1,抽象类 Geometry . public abstract class Geometry { public abstract double getArea(); } 2,矩形 ...
- [转帖]docker 最新版本升级
文章目录 前言 一.卸载低版本docker 1.1 检查docker版本 1.2 删除docker 二.开始安装 2.1 安装所需依赖 2.2 设置docker yum源 2.3 查看所有可用版本 2 ...
- [转帖]Linux make: g++: Command not found
https://www.cnblogs.com/kerrycode/p/4748606.html Linux使用make命令时遇到"make: g++: Command not found& ...
- 国产CPU制造工艺与部分性能总结
国产CPU制造工艺与部分性能总结 背景 最近一段时间验证了很多国产CPU的性能. 感觉很多地方与之前的理解有一些偏差. 前几天总结了部分架构和指令集相关的差异 今天想着总结一下制造相关的部分. 希望能 ...
- [转帖]Windows自带硬盘测试工具使用教程
本教程主要讲解Windows自带的硬盘测试工具的使用,不用再安装第三方软件了.到底准不准就不知道啦,下面我们来看看如何使用吧~ 1. 进入cmd 快速进入cmd 主要如果进入后,使用命令直接闪退,就是 ...
- Redis7.0.7的简单安装与学习
Redis7.0.7的简单安装与学习 摘要 2022.12.18 世界杯决赛 另外是我感染奥密克戎第五天. 高烧已经没了,但是嗓子巨疼. 睡不着觉,肝胆学习一下最新的Redis7.0.7 第一部分安装 ...
- 万能shell 简单查看已存在日志所有的启动记录
程序将日志 自动打包成了 gz 文件, 今天突然想查查所有的日志有没有相关关键字. 第一步解压缩所有的日志 cd 到相关目录 for i in `ls` ; do gzip -d $i ; done ...
- locust+python性能测试库
一.简介 locust官网介绍:Locust 是一个用于 HTTP 和其他协议的开源性能/负载测试工具.其对开发人员友好的方法允许您在常规 Python 代码中定义测试.Locust测试可以从命令行运 ...
- postman数据驱动(.csv文件)
做api测试的时候同一个接口我们会用大量的数据(正常流/异常流)去验证,要是一种场 景写一个接口的话相对于比较麻烦,这个时候就可以使用数据驱动来实现 1.本地创建一个txt文件,第一行写上字段名,多个 ...
- 记录TritonServer部署多模型到多GPU踩坑 | 京东云技术团队
一.问题是怎么发现的 部署chatglm2和llama2到一个4*V100的GPU机器上遇到问题 config.pbtxt 中设置模型分别在指定gpu上部署实例配置不生效 如以下配置为在gpu0上部署 ...