首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
Swoole v5.0 版本新特性预览之新的运行模式
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](https://github.com/swoole/swoole-src/releases/tag/v4.8.6)中,就提供了[swoole-cli-v4.8.6-linux-x64.tar.xz](https://github.com/swoole/swoole-src/releases/download/v4.8.6/swoole-cli-v4.8.6-linux-x64.tar.xz),可以先进行尝鲜体验。 下载解压后就可以看到如下结构: ```bash . ├── LICENSE └── swoole-cli ``` > 后期也会开源构建工具,可以自行构建。 使用方法和 PHP 在 cli 模式下运行相同: ```bash [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`系统之间复制分发运行。 ```shell 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`是没有任何意义的。
发布于2年前 · 90 次浏览 · 来自
分享
鲁飞
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](https://github.com/swoole/swoole-src/releases/tag/v4.8.6)中,就提供了[swoole-cli-v4.8.6-linux-x64.tar.xz](https://github.com/swoole/swoole-src/releases/download/v4.8.6/swoole-cli-v4.8.6-linux-x64.tar.xz),可以先进行尝鲜体验。 下载解压后就可以看到如下结构: ```bash . ├── LICENSE └── swoole-cli ``` > 后期也会开源构建工具,可以自行构建。 使用方法和 PHP 在 cli 模式下运行相同: ```bash [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`系统之间复制分发运行。 ```shell 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`是没有任何意义的。
赞
1
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2022-01-21
Reegle
什么时候发布,已迫不及待。很期待独立版本,这样不用依赖系统环境。 v5版本未来是不是像Go一样,编译好,然后丢去服务器就可以运行?那PHP还需要另外安装吗?
赞
1
回复
2022-01-21
温柔
即将迈入不兼容模式。不会成为下一个HHVM吧
赞
0
回复
微信公众号
热门内容
作者其它话题
- thinkphp5.1在使用think-swoole的时候报错unsupported option [host]
- WSL 下服务器响应数据过大无法接收
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。