PHP二进制 Swoole-Cli 了解一下

2024-06-18 15:38:37 浏览数 (1)

简介

Swoole-Cli 是一个 PHP 的二进制发行版,集成了 swoolephp 内核php-cliphp-fpm 以及多个常用扩展。Swoole-Cli 是全部静态编译打包的,不依赖任何操作系统的 so 动态链接库,具备非常好的移植性,可以在任意 Linux 系统之间复制,下载即可使用。

作为 PHP 开发者都应该知道 PHP 有两种运行模式:php-fpmphp-cli。那么在 Swoole 5.0 中将迎来一种新的运行模式:swoole-cli

Swoole将像node.js这样作为独立程序提供给用户,而不是作为PHP的一个扩展。

除此之外swoole-cli会尽可能地对php-src进行裁剪,移除一些不用的机制、模块、扩展、函数、类型、常量、代码,使得整个程序可以在几分钟之内编译完成。

操作系统支持

Swoole-Cli 会提供 LinuxmacOSWindows(Cygwin) 3种操作系统的二进制包的支持。

安装

下载

Linux 系统

代码语言:javascript复制
wget https://github.com/swoole/swoole-cli/releases/download/v5.1.3.0/swoole-cli-v5.1.3-linux-x64.tar.xz

Windows 系统

代码语言:javascript复制
https://github.com/swoole/swoole-cli/releases/download/v5.1.3.0/swoole-cli-v5.1.3-cygwin-x64.zip

配置环境

代码语言:javascript复制
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

代码语言:javascript复制
swoole-cli -v
Swoole 5.1.3 (cli) (built: Jun  7 2024 07:19:27) (NTS)

查看已安装扩展swoole-cli -m

代码语言:javascript复制
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配置文件。

代码语言:javascript复制
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

代码语言:javascript复制
# 查看帮助文件
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文件

代码语言:javascript复制
<?php

$http = new SwooleHttpServer('127.0.0.1', 9501);

$http->on('start', function ($server) {
    echo "Swoole http server is started at http://127.0.0.1:9501n";
});

$http->on('request', function ($request, $response) {
    $response->header('Content-Type', 'text/plain');
    $response->end('Hello 开源技术小栈!');
});

$http->start();

通过swoole-cli启动

代码语言:javascript复制
swoole-cli server.php 
Swoole http server is started at http://127.0.0.1:9501

通过curl访问

代码语言:javascript复制
curl http://127.0.0.1:9501
Hello 开源技术小栈!

启动 webman

代码语言:javascript复制
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:WorkermanEventsSelect
--------------------------------------------- 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.

0 人点赞