简介
Swoole-Cli 是一个 PHP 的二进制发行版,集成了 swoole、php 内核、php-cli、php-fpm 以及多个常用扩展。Swoole-Cli 是全部静态编译打包的,不依赖任何操作系统的 so 动态链接库,具备非常好的移植性,可以在任意 Linux 系统之间复制,下载即可使用。
作为 PHP 开发者都应该知道 PHP 有两种运行模式:php-fpm和php-cli。那么在 Swoole 5.0 中将迎来一种新的运行模式:swoole-cli。
Swoole将像node.js这样作为独立程序提供给用户,而不是作为PHP的一个扩展。
除此之外swoole-cli会尽可能地对php-src进行裁剪,移除一些不用的机制、模块、扩展、函数、类型、常量、代码,使得整个程序可以在几分钟之内编译完成。
操作系统支持
Swoole-Cli 会提供 Linux、macOS、Windows(Cygwin) 3种操作系统的二进制包的支持。
安装
下载
Linux 系统
wget https://github.com/swoole/swoole-cli/releases/download/v5.1.3.0/swoole-cli-v5.1.3-linux-x64.tar.xz
Windows 系统
https://github.com/swoole/swoole-cli/releases/download/v5.1.3.0/swoole-cli-v5.1.3-cygwin-x64.zip
配置环境
tar -xf swoole-cli-v5.1.3-linux-x64.tar.xz
chmod u+x swoole-cli
sudo mv swoole-cli /usr/bin/swoole-cli
查看版本号swoole-cli -v
swoole-cli -v
Swoole 5.1.3 (cli) (built: Jun 7 2024 07:19:27) (NTS)
查看已安装扩展swoole-cli -m
swoole-cli -m
[PHP Modules]
apcu
bcmath
bz2
Core
ctype
curl
date
dom
ds
exif
fileinfo
filter
gd
gmp
hash
iconv
imagick
inotify
intl
json
libxml
mbstring
mongodb
mysqli
mysqlnd
opcache
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sockets
sodium
SPL
sqlite3
ssh2
standard
swoole
tokenizer
xlswriter
xml
xmlreader
xmlwriter
xsl
yaml
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
配置文件
swoole-cli 默认不加载任何 php.ini 配置文件。可通过 -d 参数来设置 PHP 选项或使用 -c 参数指定加载的php.ini配置文件。
swoole-cli -d swoole.use_shortname=off bin/hyperf.php start
swoole-cli -c /tmp/php.ini -v
启动 PHP-FPM
swoole-cli 集成了 PHP-FPM ,可使用 -P 命令来启动 fpm 。
# 查看帮助文件
swoole-cli -P -h
# 运行 FPM
swoole-cli -P --fpm-config /opt/php-8.1/etc/php-fpm.conf -p /opt/php-8.1/var
# 关闭守护进程
swoole-cli -P --fpm-config /opt/php-8.1/etc/php-fpm.conf -p /opt/php-8.1/var -F
# 使用 root 账户启动
swoole-cli -P --fpm-config /opt/php-8.1/etc/php-fpm.conf -p /opt/php-8.1/var -F -R
启动 Swoole Server
server.php文件:
<?php
$http = new Swoole\Http\Server('127.0.0.1', 9501);
$http->on('start', function ($server) {
echo "Swoole http server is started at http://127.0.0.1:9501\n";
});
$http->on('request', function ($request, $response) {
$response->header('Content-Type', 'text/plain');
$response->end('Hello 开源技术小栈!');
});
$http->start();
通过swoole-cli启动:
swoole-cli server.php
Swoole http server is started at http://127.0.0.1:9501
通过curl访问
curl http://127.0.0.1:9501
Hello 开源技术小栈!
启动 webman
cd webman.tinywan.com
swoole-cli start.php start
Workerman[start.php] start in DEBUG mode
-------------------------------------------- WORKERMAN --------------------------------------------
Workerman version:4.1.15 PHP version:8.1.27 Event-Loop:\Workerman\Events\Select
--------------------------------------------- WORKERS ---------------------------------------------
proto user worker listen processes status
tcp www webman http://0.0.0.0:8787 8 [OK]
tcp www monitor none 1 [OK]
---------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.