深度剖析 Swoole6 PHP 多线程实现原理

9 月 25 日
阅读 12 分钟
258
PHP作为一种常用的服务器端脚本语言,被广泛用于Web开发。然后相比Java、C++、Golang等编程语言,PHP语言缺少多线程的支持,只能使用fork创建多个进程来实现并行处理。由于进程之间并不共享内存堆栈和文件句柄,PHP只能借助Redis或APCu等内存数据库或共享内存来实现进程间的数据共享,编程的局限性较大。

Swoole 协程是否支持 PHP 的 JIT ?

8 月 22 日
阅读 2 分钟
332
JIT(Just-In-Time Compilation,及时编译)是一种运行时编译技术,它在程序运行时将字节码转换为机器码,以提高代码的执行效率。

Swoole v6 Alpha 版本已发布,为 PHP 带来稳定可靠、生产可用的多线程方案

7 月 5 日
阅读 4 分钟
993
经过数月的开发和测试工作,Swoole v6 的第一个版本终于发布了。Swoole v6 将为 PHP 带来稳定可靠、生产可用的多线程方案。欢迎各位进行试用,为我们提交测试报告和问题反馈。

Swoole v6 要来了!即将增加多线程支持

3 月 22 日
阅读 3 分钟
1.6k
在 PHP + Swoole 的服务器编程开发中,协程的支持已经解决了大部分难题,但是我们发现跨进程读写数据依然很难,需要借助进程间通信(IPC)、Redis、Swoole\Table 或其他共享内存实现。

Swoole 5.1 增加更多数据库协程客户端支持

2023-06-09
阅读 6 分钟
4.9k
在 5.1 版本中增加了多种数据库协程客户端的支持,并且全部以 PDO 接口的方式提供,旧的业务代码无需做任何更改即可一键切换为协程模式,异步非阻塞地并发执行。

Think-Swoole: 全面协程化你的 ThinkPHP 应用

2023-03-09
阅读 2 分钟
2.3k
ThinkPHP 是一款经典的国产开源 PHP 开发框架。ThinkPHP 诞生于 2006 年,距今已经有 17 年历史。ThinkPHP 在国内的应用非常广泛,很多知名企业使用了 ThinkPHP 来构建 Web 项目。

Swoole-Cli v5.0.2 增加 opcache/readline 扩展,强化 Cli-Server

2023-02-27
阅读 4 分钟
1.7k
最近我们发布了 Swoole-Cli v5.0.2,这个版本增加了 opcache 扩展,使得 swoole-cli 内置的 php-fpm、cli-http-server 也可以用于生产环境了,而不仅仅是作为测试使用。

在 Swoole 服务器程序中如何实现压力反馈

2023-02-10
阅读 2 分钟
4.3k
服务端程序在遇到高并发请求时,一旦超过程序所能处理的极限,可能会导致崩溃,引发线上服务的大规模雪崩。压力反馈(Back Pressure)是一种由服务端主动告知客户端自身资源不足,无法提供服务的一种手段。在 Web 服务中可以返回 HTTP 503 (Service Unavailable)告知客户端当前服务器处于比较高的负载状态。这时客户端...

CodeGalaxy 推出轻量集群,可在云主机上一键搭建 K8s

2022-12-08
阅读 3 分钟
1.4k
CodeGalaxy 是 Swoole 官方推出的 ServerLess 平台,底层基于 Docker 和 K8s,帮助开发者更简单方便地管理云上的 Web 应用/服务。CodeGalaxy 是完全免费的,用户不需要付费即可使用。

使用 CodeGalaxy Cli 快速部署 Laravel 应用

2022-11-29
阅读 4 分钟
979
CodeGalaxy 是 Swoole 官方推出的 ServerLess 平台,旨在帮助开发者更方便地实现应用的开发部署,在一个平台就可以完成代码托管、云端应用开发调试和构建、多云部署以及接入层管理。

使用 CodeGalaxy Cli 快速部署 Hyperf 应用

2022-11-29
阅读 3 分钟
1.2k
CodeGalaxy 是 Swoole 官方推出的 ServerLess 平台,旨在帮助开发者更方便地实现应用的开发部署,在一个平台就可以完成代码托管、云端应用开发调试和构建、多云部署(K8s 容器编排、调度、弹性伸缩)以及接入(Service、网关、SLB、CDN、域名)。

Swoole-Cli 5.0.1:PHP 的二进制发行版

2022-11-09
阅读 2 分钟
2.6k
Swoole-Cli 是一个 PHP 的二进制发行版,集成了 swoole、php 内核、php-cli、php-fpm以及多个常用扩展。Swoole-Cli 是全部静态编译打包的,不依赖任何操作系统的so动态链接库,具备非常好的移植性,可以在任意 Linux 系统之间复制,下载即可使用。

Swoole 团队云原生新项目 Code-Galaxy 介绍

2022-05-20
阅读 4 分钟
3.3k
这半年我们做了一个新项目,一站式 K8s 云原生(Cloud Native)系统:Code-Galaxy。近几年云原生的概念非常热门,包括腾讯云、阿里云等云厂商、大型互联网企业,以及大量初创的 DevOps 公司,都在做云原生方向的产品和服务。但由于 K8s 本身非常复杂,要想真的在项目中使用 K8s 云原生技术不是一件容易的事情,需要大量...

Swoole v5.0 版本新特性预览之新的运行模式

2022-01-20
阅读 2 分钟
4.7k
PHP 8.1 版本已经在 2021年 11 月 25 日发布了,Swoole 也在第一时间进行了兼容处理,但由于强类型的一些限制,都会导致一些BC的情况发生。
封面图

Swoole v4.8.1 版本发布,支持忽略指定错误码的日志

2021-10-29
阅读 2 分钟
3k
v4.8.1 版本主要优化了 admin server 的代码,没有向下不兼容改动。支持忽略指定的错误码日志在此版本中增加了可以忽略指定的错误码所对应的错误日志,举个例子: {代码...} 忽略了错误码为ERRNO_2的日志,所以查看错误日志中没有swoole_error_log_ex ERRNO_2 msg的信息。 {代码...} 同时也可以使用swoole_error_log_ex...
封面图

Swoole v4.8.0 版本发布,增加 Swoole Dashboard 面板

2021-10-14
阅读 4 分钟
4.2k
在 base 模式下,onStart 回调将始终在第一个工作进程 (worker id 为 0) 启动时回调,先于 onWorkerStart 执行。在 onStart 函数中始终可以使用协程 API,Worker-0 出现致命错误重启时,会再次回调 onStart
封面图

Swoole v4.7.1 版本发布,Bug 修复版本

2021-08-19
阅读 2 分钟
1.8k
支持了形如HOST:PORT:ADDRESS、[+]HOST:PORT:ADDRESS、[-]HOST:PORT:ADDRESS和多地址的格式
封面图

Swoole v4.7.0 版本正式发布,Swoole 官网支持直接运行 Swoole 代码

2021-07-16
阅读 3 分钟
3.4k
在 Swoole 官网增加了 在线运行 的按钮,可以直接运行首页提供的一些示例代码,当然也可以手动输出一些 PHP 代码进行测试。可以访问 Swoole 官网首页进行测试使用:[链接]目前还处于测试阶段,有遇到 BUG 可以向识沃科技客服反馈或交流群中反馈。版本说明在未正式发布时,对于一些新特性和功能发布过文章进行说明,所以...
封面图

Swoole v4.7 版本新特性预览之支持为每个端口设置不同的心跳检测时间

2021-07-05
阅读 2 分钟
2.5k
在之前的版本中,多端口监听的心跳检测功能只能配置在主服务上,无法为每个端口单独设置心跳时间。例如需要在9501端口上设置 30 秒,而9502端口上设置 60 秒。从v4.7版本开始进行了支持,下面来详细了解一下。配置项在 Server 中提供了两个配置项:heartbeat_check_interval 和 heartbeat_idle_time。可以使用如下配置项...
封面图

Swoole v4.7 版本预览之支持 c-ares

2021-06-30
阅读 4 分钟
3.6k
c-ares 是什么?c-ares 是一个异步 DNS 解析库。 它适用于需要在不阻塞的情况下执行 DNS 查询或需要并行执行多个 DNS 查询的应用程序。默认不开启,如需开启,需要在编译 Swoole 时增加 --enable-cares 参数gethostbyname在之前的版本中 Coroutine\System::gethostbyname 是基于同步的线程池模拟实现,底层自动进行协程...
封面图

Swoole v4.7 版本新特性预览之 Co::cancel()

2021-06-08
阅读 3 分钟
3.5k
相信之前就有很多用户想要一个取消协程的 API,迟迟没有添加进来,现在在 v4.7 版本中进行了添加:具体实现见:#4247 ,#4249新增 API & 常量新增了两个 API,分别为 {代码...} 用于取消某个协程,但不能对当前协程发起取消操作和 {代码...} 用于判断当前协程是不是被取消的新增了三个错误码:常量含义SWOOLE_ERROR_...
封面图

Swoole v4.7 版本新特性预览之 onDisconnect 事件回调

2021-05-31
阅读 3 分钟
2.9k
在之前的版本中可能有这样一种情况,在 WebSocket 服务器中无法在 close 事件回调中区分该 fd 是否为 WebSocket 连接,例如以下代码:
封面图

Swoole v4.7 版本新特性预览之 Process\Pool::detach()

2021-05-25
阅读 2 分钟
2.5k
该模块的核心功能为进程管理,相比 Process 实现多进程,Process\Pool 更加简单,封装层次更高,开发者无需编写过多代码即可实现进程管理功能,配合 Coroutine\Server 可以创建纯协程风格的,能利用多核 CPU 的服务端程序。
封面图

Swoole v4.6.7 版本发布,Bug修复版本

2021-05-14
阅读 2 分钟
3.6k
此版本中修复了Http\Response::end()方法总是返回 true 的问题,同时修改了 output_buffer_size 的默认值
封面图

Swoole v4.6.6 版本发布,Bug 修复版本

2021-04-22
阅读 1 分钟
1.4k
支持在 FreeBSD 下 Master 进程退出后向 Manager 进程发送 SIGTERM 信号 (#4150) (@devnexen)
封面图

Swoole v4.6.5 版本发布,增加原生curl multi支持

2021-04-09
阅读 6 分钟
5.1k
v4.6.5 版本没有向下不兼容改动,主要对原生 curl hook 进行了一些增强,支持了 curl multi支持原生 curl multi使用原生 curl hook 的前提是在编译 Swoole 扩展时开启--enable-swoole-curl选项可以使用以下代码进行测试: {代码...} 支持 curl multi 之后,也就间接的支持了 Guzzle,无需更改任何代码,即可支持。 {代码...
封面图

Swoole v4.6.4 版本发布,Bug 修复版本

2021-03-12
阅读 2 分钟
1.9k
新增了 Swoole\Coroutine\Http\get 、Swoole\Coroutine\Http\post 和 Swoole\Coroutine\Http\request 函数,这个操作为了方便 Coroutine\Http\Client 的使用
封面图

Swoole v4.6 版本新特性之 Http\Response 增强

2021-02-09
阅读 3 分钟
3.8k
在 4.6 版本中,对 Swoole\Http\Response 进行了一些增强:添加 Http\Response::isWritable (db56827) (@matyhtf)增强 Response\create() 方法,可以独立于 Server 使用 (#3998) (@matyhtf)再来看一下上一篇文章的示例代码: {代码...} 需要用户自行处理$send_data的数据,而此次增强以后,可以这样使用: {代码...} 还...
封面图

Swoole v4.6.3 版本发布,祝大家 2021 春节快乐

2021-02-09
阅读 2 分钟
6.2k
牛年春节在即,Swoole 也迎来了 2020年(农历)的最后一个版本。在此感谢为 Swoole 的代码、文档以及生态方面做出贡献的小伙伴,也期待有更多的小伙伴加入\~祝大家 2021 牛年春节快乐,Bug 全走开。v4.6.3 版本主要是一个 Bug 修复版本,没有向下不兼容改动。新增了 Swoole\Coroutine\go 和 Swoole\Coroutine\defer 函数...
封面图

Swoole v4.6 版本新特性之 Http\Request 增强

2021-02-04
阅读 5 分钟
8.8k
在 4.6 版本中,对 Swoole\Http\Request 进行了一些增强:新增 create/parse/isCompleted 方法 (#3938) (@matyhtf)新增 getMethod 方法 (#3987) (@luolaifa000)那么这些增强功能有什么用呢?这里举一个例子:使用 TCP Server,提供 HTTP Server 的访问在没有这些方法之前,需要手动将 onReceive 事件中收到的 $data 数据...
封面图