page contents

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

PHP 8.1 版本已经在 2021年 11 月 25 日发布了,Swoole 也在第一时间进行了兼容处理,但由于强类型的一些限制,都会导致一些BC的情况发生。

attachments-2022-01-pZKr50h761eb60e6b6353.png

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_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是没有任何意义的。

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。
attachments-2022-06-RKT2M9F862b289a2788c7.jpeg

  • 发表于 2022-01-22 09:42
  • 阅读 ( 405 )
  • 分类:行业资讯

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章