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

简介: PHP 8.1 版本已经在 2021年 11 月 25 日发布了,Swoole 也在第一时间进行了兼容处理,但由于强类型的一些限制,都会导致一些BC的情况发生。于是目前将master分支不再作为 4.9版本发布,而调整为 5.0版本发布,预计发布时间为农历新年后。

新的运行模式


作为PHP开发者都应该知道PHP有两种运行模式:php-fpmphp-cli,那么在 Swoole 5.0中将迎来一种新的运行模式:swoole-cli

Swoole 将像node.js这样作为独立程序提供给用户,而不是作为PHP的一个扩展。

除此之外swoole-cli会尽可能地对php-src进行裁剪,移除一些不用的机制、模块、扩展、函数、类型、常量、代码,使得整个程序可以在几分钟之内编译完成。

在 GitHub release时,将随着源码包进行发布,例如在v4.8.6中,就提供了swoole-cli-v4.8.6-linux-x64.tar.xz,可以先进行尝鲜体验。

下载解压后就可以看到如下结构:

.
├── LICENSE
└── swoole-cli

后期也会开源构建工具,可以自行构建。

使用方法和 PHP 在 cli 模式下运行相同:

[root@lufei ~]# ./swoole-cli -v
Swoole 4.8.6 (cli) (built: Jan 11 2022 10:19:44) (NTS)
[root@lufei ~]# ./swoole-cli -m
[PHP Modules]
bcmath
bz2
Core
ctype
curl
date
dom
exif
fileinfo
filter
gd
gmp
hash
iconv
imagick
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
redis
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
swoole
tokenizer
xml
xmlreader
xmlwriter
xsl
zip
zlib
[Zend Modules]


  • 运行框架

Hyperf:./swoole-cli bin/hyperf.php start

imi:./swoole-cli vendor/bin/imi-swoole swoole/start

easyswoole:./swoole-cli easyswoole server start

静态编译无依赖

swoole-cli会全部使用静态编译连接方式,libclibstdc++使用musl,并会包含opensslcurl库和扩展。

用户可修改构建脚本添加其他更多三方扩展。

使得Swoole程序不再依赖任何系统的so,可在任意Linux系统之间复制分发运行。


htf@htf-ThinkPad-T470p:~/workspace/php/awsl-psl$ ldd swoole-cli 
    不是动态可执行文件

移除动态扩展加载机制

移除 dl() 函数和php.ini配置extension={name}.so的动态扩展加载机制,所有扩展必须为静态编译。

swoole-cli允许自定义构建系统,将扩展添加到模块列表中。

移除 php -S 内置服务器

在Swoole环境下没有意义。

移除内置扩展

移除使用率低、历史遗留、不支持协程的内置扩展,包括但不限于:

  • com_dotnet
  • dba
  • ftp
  • ffi
  • imap
  • ldap
  • oci8
  • odbc
  • pdo_dblib
  • pdo_firebird
  • pdo_oci
  • pdo_odbc
  • pdo_pgsql
  • pgsql
  • pspell
  • shmop
  • snmp
  • sysvmsg
  • sysvsem
  • tidy

swoole-cli具体安装的扩展以发布后为准。

移除函数

移除非 cli 模式、使用率低、历史遗留、不支持协程的内置函数,包括但不限于:

  • checkdnsrr
  • dns_check_record
  • dns_get_mx
  • header
  • header_register_callback
  • header_remove
  • session_start
  • mail

移除 ZTS

移除ZTS模式,在cli模式下ZTS是没有任何意义的。

目录
相关文章
|
29天前
|
Ubuntu 安全 Linux
|
24天前
|
前端开发 PHP 数据库
原生PHP网站源码
原生PHP网站通常指的是使用纯PHP代码编写的网站,没有使用框架或者类库来简化开发流程。
28 1
|
JavaScript
nodejs以往版本
nodejs以往版本
58 0
|
SQL 负载均衡 Oracle
GoFrame 新版本特性 抢先知
下面我就以GoFrame活跃粉丝的身份为大家剧透一下GoFrame新版本的特性。
302 0
|
缓存 JavaScript API
NodeJS V18稳定版本正式发布,这个特性太棒了
NodeJS V18稳定版本正式发布,这个特性太棒了
1925 0
|
Oracle Java 关系型数据库
一劳永逸的安装JDK,支持快速的版本切换
登录oracle下载对应JDK https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html (链接以后可能失效) 下载 jdk-8u291-linux-x64.tar.gz 安装java
234 0
一劳永逸的安装JDK,支持快速的版本切换
|
域名解析 网络协议 NoSQL
Swoole v4.7 版本预览之支持 c-ares
c-ares 是一个异步 DNS 解析库。 它适用于需要在不阻塞的情况下执行 DNS 查询或需要并行执行多个 DNS 查询的应用程序。
554 0
|
网络协议
Swoole v4.7 版本新特性预览之支持为每个端口设置不同的心跳检测时间
在之前的版本中,多端口监听的心跳检测功能只能配置在主服务上,无法为每个端口单独设置心跳时间。 例如需要在9501端口上设置 30 秒,而9502端口上设置 60 秒。从v4.7版本开始进行了支持.
193 0
|
PHP
Swoole v4.6.7 版本发布,Bug修复版本
v4.6.7 版本主要是一个 Bug 修复版本,没有向下不兼容改动。
137 0
|
搜索推荐 Web App开发 开发工具
V8引擎发布7.0正式版,支持WebAssembly线程预览、优化数组排序算法
该版本将会在几周内与Chrome 70稳定版一起发布,在此之前一直作为Beta版本与Chrome进行联调测试。V 7.0包涵了许多对开发人员很有帮助的新功能。本文带你一起了解其中的一些亮点。
1269 0