app | ||
build | ||
config | ||
jsonrpc | ||
process | ||
public | ||
runtime | ||
support | ||
.env.example | ||
.gitignore | ||
composer | ||
composer.json | ||
composer.lock | ||
envexample | ||
LICENSE | ||
php | ||
php.ini | ||
README.md | ||
start.php | ||
webman | ||
windows.bat | ||
windows.php |
基于docker的webman-jsonrpc
我们在php:8.2.20-cli
基础上安装了运行webman必要的一些扩展和开发中常用的扩展,以及composer,制作成workerman:8.2.20
镜像,因此在开发环境中不需要再额外配置php环境,直接写业务代码即可。
版本
./php start.php start
Workerman[start.php] start in DEBUG mode
------------------------------------------- WORKERMAN --------------------------------------------
Workerman version:4.1.15 PHP version:8.2.20 Event-Loop:\Workerman\Events\Event
-------------------------------------------- WORKERS ---------------------------------------------
proto user worker listen processes status
tcp root webman http://0.0.0.0:8787 8 [OK]
tcp root monitor none 1 [OK]
tcp root jsonrpc jsonNL://0.0.0.0:8021 8 [OK]
--------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
依赖
只要系统环境中有docker即可(生产环境需要docker-compose),不需要安装php环境。
使用方法
# composer
./composer require xxxx
# 启动服务
./php start.php start
# 执行其它php命令
./php -m
./php webman build:bin
服务端口
在.env文件中可以定义服务端口,默认情况下docker容器是在host网络下启动的,当然,实际使用中也可以改成端口映射模式。
生产环境使用
创建一个docker-compose.yml文件:
services:
webman:
image: quay.io/wandoubaba517/workerman:8.1.27
container_name: webman
restart: always
volumes:
- ./:/app/service
working_dir: /app/service
stdin_open: true
ports:
- 8787:8787
# 部署生产时启动这一句
command: ['php', 'start.php', 'start']
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8787/"]
interval: 5s
retries: 3
start_period: 5s
timeout: 10s
然后直接执行(前提要有docker-compose插件)
docker compose up -d
一些有用的文件
文件 | 作用 | 用法或说明 |
---|---|---|
composer | 调起容器中的composer命令的shell脚本 | 用法与主机中的compose完全一致,./composer $args... |
php | 调起容器中的php命令的shell脚本 | 用法与主机中的php一致,但注意执行./php start.php start命令时不要加-d参数 |
php.ini | 映射到容器中的php.ini配置文件 | 容器中已经安装的扩展都有单独的配置文件,这里不会有体现 |
已安装PHP扩展
php -m
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
event
exif
fileinfo
filter
ftp
gd
gmp
hash
iconv
imagick
json
libxml
mbstring
mongodb
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
posix
readline
redis
Reflection
session
SimpleXML
sockets
sodium
SPL
sqlite3
standard
tokenizer
xlswriter
xml
xmlreader
xmlwriter
Zend OPcache
zip
zlib
zookeeper
[Zend Modules]
Zend OPcache
开发说明
jsonrpc服务端配置
主要在config/process.php
中配置,.env
文件可以辅助。
jsonrpc控制器
在app/jsonrpc
目录中参照示例创建控制器文件和方法即可。
jsonrpc客户端配置
主要在config/jsonrpc.php
中配置,.env
文件可以辅助。
客户端调用服务端的方法
$res1 = \jsonrpc\Client::service('default', 'Demo')->hello('Json');
$res2 = \jsonrpc\Client::service('user', 'User')->login('admin', '123456');
$res3 = \jsonrpc\Client::service('default', 'Demo')->text();