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这东西可以为我们带来什么不可思议的功能。今天就先到这里吧:)

 

 

---------------------------  我是可爱的分割线  ----------------------------

最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。

 

posted on   咚..咚  阅读(521)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示