PHP 8.1 版本曾经在 2021年 11 月 25 日公布了,Swoole 也在第一工夫进行了兼容解决,但因为强类型的一些限度,都会导致一些BC的状况产生。
于是目前将master分支不再作为 4.9版本公布,而调整为 5.0版本公布,预计公布工夫为农历新年后。
新的运行模式
作为PHP开发者都应该晓得PHP有两种运行模式:php-fpm和php-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会全副应用动态编译连贯形式,libc和libstdc++应用musl,并会蕴含openssl和curl库和扩大。
用户可批改构建脚本增加其余更多三方扩大。
使得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_dotnetdbaftpffiimapldapoci8odbcpdo_dblibpdo_firebirdpdo_ocipdo_odbcpdo_pgsqlpgsqlpspellshmopsnmpsysvmsgsysvsemtidy
swoole-cli具体装置的扩大以公布后为准。
移除函数
移除非 cli 模式、使用率低、历史遗留、不反对协程的内置函数,包含但不限于:
checkdnsrrdns_check_recorddns_get_mxheaderheader_register_callbackheader_removesession_startmail
移除 ZTS
移除ZTS模式,在cli模式下ZTS是没有任何意义的。
发表回复