type
Post
status
Published
date
Jul 2, 2021
slug
php/swoole/index
summary
tags
PHP
Swoole
开发
category
PHP
icon
password
URL
Swoole是什么?
作者:韩天峰解答(资深PHP程序员,Swoole开源项目创始人,PHP官方扩展开发组成员。)
Swoole是一个为PHP用C和C++编写的基于事件的高性能异步&协程并行网络通信引擎;一直以来在其他编程语言程序员心目中PHP就是个套HTML页面的。所谓PHP程序员就是搞WordPress、discuz二次开发,一个月拿三五千的loser,和我大Java工程师相比简直low爆了;但大家黑了PHP半天,才发现PHP最近这几年反而越来越流行了,PHPer们的工资可一点都不低。就拿我司来说吧,之前面过一个PHP程序员工作三年多,水平一般吧,后来公司开价2万/m收了;水平好一点的平均都在3-4万/m。实际上作为一名PHP程序员,我很清楚PHP的确有很多局限性,比如Unix系统编程、网络通信编程、异步io,大部分PHPer不懂;PHP界也确实没有这样的东西。Swoole开源项目就是为了弥补PHP在这些方面的缺陷诞生的。与WordPress这些产品不同,swoole实际上是一个网络通信和异步io的引擎,一个基础库。PHPer可以基于swoole去实现过去PHP无法实现的功能。swoole为PHPer打开了通往另一个世界的大门;
✨事件驱动
Swoole中的网络请求处理是基于事件的,并且充分利用了底层的epoll / kqueue实现,使得为数百万个请求提供服务变得非常容易;Swoole4使用全新的协程内核引擎,现在它拥有一个全职的开发团队,因此我们正在进入PHP历史上前所未有的时期,为性能的高速提升提供了独一无二的可能性;Swoole中的时间函数实现为一个闭包,如:
⚡️协程
Swoole4或更高版本拥有高可用性的内置协程,您可以使用完全同步的代码来实现异步性能,PHP代码没有任何额外的关键字,底层会自动进行协程调度;开发者可以将协程理解为超轻量级的线程, 你可以非常容易地在一个进程中创建成千上万个协程;
Swoole能做什么?
1、php程序中没有进程和线程的概念,但是swoole可以模拟出进程/线程,可以用来解决并发问题;2、在于websocket通信,swoole封装好了这个功能,也是现在很多直播软件服务器常用的框架;
学习Swoole需要掌握哪些基础知识
多进程/多线程
了解Linux操作系统进程和线程的概念;了解Linux进程/线程切换调度的基本知识;了解进程间通信的基本知识,如管道、UnixSocket、消息队列、共享内存;
SOCKET
了解SOCKET的基本操作如accept/connect、send/recv、close、listen、bind;了解SOCKET的接收缓存区、发送缓存区、阻塞/非阻塞、超时等概念;
IO复用
了解select/poll/epoll;了解基于select/epoll实现的事件循环,Reactor模型;了解可读事件、可写事件;
TCP/IP网络协议
了解TCP/IP协议;了解TCP、UDP传输协议;
调试工具
使用 gdb 调试Linux程序;使用 strace 跟踪进程的系统调用;使用 tcpdump 跟踪网络通信过程;其他Linux系统工具,如ps、lsof、top、vmstat、netstat、sar、ss等;
安装Swoole
官方给出了好几种安装方法,我使用是pecl安装:官方安装链接:https://wiki.swoole.com/wiki/page/7.html安装完以后使用php --ri swoole来查看是否安装成功:

- 作者:鹿鹿鹿
- 链接:https://luxiaopeng.com/article/php/swoole/index
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
初探Swoole




