新的运行模式
作为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
是没有任何意义的。