# 基于docker的workerman-jsonrpc 我们在`php:8.1-cli`基础上安装了运行workerman必要的一些扩展和开发中常用的扩展,以及composer,制作成`workerman:8.1`镜像,因此在开发环境中不需要再额外配置php环境,直接写业务代码即可。 ## 依赖 只要系统环境中有docker即可,不需要安装php环境 ## 使用方法 ```sh # 启动 ./start # composer ./composer install ./conposer require xxxx ``` ## 一些有用的文件 | 文件 | 作用 | 用法或说明 | |---|---|---| |composer|调起容器中的`composer`命令的shell脚本|`./composer $args...`| |start|调起容器中的`php start.php`命令的shell脚本|`./start`或`./start start`| |docker-compose-dev.yml|运行容器的编排文件|一般不需要理会这个文件,composer和start脚本都需要依赖这个文件| |php.ini|映射到容器中的php.ini配置文件|容器中已经安装的扩展都有单独的配置文件,这里不会有体现| - 一定要保证`composer`脚本、`start`脚本中的`compose_file`文件名与实际的`docker-compose-dev.yml`文件名一致。 - 一定要保证`composer`脚本、`start`脚本中的`service_name`容器名称与`docker-compose-dev.yml`文件中的`container_name`保持一致。 ## workerman workerman 是一个高性能的PHP socket服务框架,开发者可以在这个框架下开发各种网络应用,例如Rpc服务、聊天室、游戏等。 workerman 具有以下特性 * 多进程 * 支持TCP/UDP * 支持各种应用层协议 * 使用libevent事件轮询库,支持高并发 * 支持文件更新检测及自动加载 * 支持服务平滑重启 * 支持telnet远程控制及监控 * 支持异常监控及告警 * 支持长连接 * 支持以指定用户运行worker进程 所需环境 ======== workerman需要PHP版本不低于5.3,只需要安装PHP的Cli即可,无需安装PHP-FPM、nginx、apache workerman不能运行在Window平台 安装 ========= 1、下载 或者 git clone ```https://github.com/walkor/workerman-JsonRpc``` 2、运行 ```composer install``` 启动停止 ========= 启动 `php start.php start -d` 重启启动 `php start.php restart` 平滑重启/重新加载配置 `php start.php reload` 查看服务状态 `php start.php status` 停止 `php start.php stop` Rpc应用使用方法 ========= ### 客户端同步调用: ```php getInfoByUid($uid); ``` ### 客户端异步调用: RpcClient支持异步远程调用 ```php asend_getInfoByUid($uid); // 异步调用User::getEmail方法 $user_client->asend_getEmail($uid); 这里是其它的业务代码 .................... .................... // 需要数据的时候异步接收数据 $ret_async1 = $user_client->arecv_getEmail($uid); $ret_async2 = $user_client->arecv_getInfoByUid($uid); 这里是其他业务逻辑 ``` ### 服务端: 服务端每个类提供一组服务,类文件默认放在Applications/JsonRpc/Services目录下。 客户端实际上是远程调用这些类的静态方法。 例如: ```php getInfoByUid($uid); ``` 调用的是Applications/JsonRpc/Services/User.php 中 User类的getInfoByUid方法。 User.php文件类似这样 ```php