手把手教你5分钟用 PHP 搭建一个高性能服务化后端框架
Charles 发布于2019-06-28 18:21 / 1052人阅读
摘要:前言一直以来,因为标准应用方式是配合或使用,而被认为不适合做服务化后端。下面我就介绍如何用来搭建一个高性能的服务化后端框架,并且实现一个客户端调用例子。服务端我使用的框架叫,地址在这里。
前言
一直以来,PHP 因为标准应用方式是配合 php-fpm 或 apache mod 使用,而被认为不适合做服务化后端。但是随着 Workerman 和 Swoole 这些常驻进程模块的出现,PHP 其实早就已经合格。
下面我就介绍如何用 PHP 来搭建一个高性能的服务化后端框架,并且实现一个客户端调用例子。
服务端
现在 PHP 圈子里最流行的框架是 Laravel, Lumen 是它的精简版,保留了 Container(依赖注入), artisan(命令行生成数据表)等优点。
服务端我使用的框架叫 Luke,Github 地址在这里。Luke 是 Lumen 的非官方分支,在 Lumen 上层做了一层封装,剥离了用于 http 的路由,同时引入 Workerman。
现在在你的工作目录执行下面命令生成项目代码
</>复制代码
composer create-project luke/luke=dev-luke rpcservercd rpcserver这时在 servers 目录下有 http.php 和 jsonrpc.php 两个文件,分别对应 http 服务 和 jsonrpc 服务。现在我们进入 rpcserver/app/Http/Controllers,编辑文件 ExampleController.php,增加下面代码
</>复制代码
public function show($name){ return "Hello $name, this is Luke.";}这样我们服务端就已经搭建好了,现在回到 rpcserver 目录,执行下面命令开启服务
</>复制代码
php servers/jsonrpc.php start这时 console 会输出
</>复制代码
Workerman[servers/jsonrpc.php] start in DEBUG mode----------------------- WORKERMAN -----------------------------Workerman version:3.5.4 PHP version:7.2.1------------------------ WORKERS -------------------------------user worker listen processes statussimon none jsonNL://0.0.0.0:8000 1 [OK] ----------------------------------------------------------------表示服务正在正常运行。
本例子只给 Workerman 一个任务进程,更多设置和守护进程方式可以查看 Workerman文档
客户端
现在我们回到项目根目录,另开一个 console,输入下面命令新建客户端目录,引入模块
</>复制代码
mkdir clientcd clientcomposer require luke/client这时 vendor/luke/client 目录下已经有了两个文件 config.php 和 test.php,他们分别是配置和客户端的例子。我们不管他们,在项目目录下新建 test.php 文件,输入下面的代码并保存
</>复制代码
[ "hosts" => ["127.0.0.1:8000"] ]];Client::config($config);$client = Client::instance("Example");$ret = $client->show("开发者");var_dump($ret);现在执行
</>复制代码
php test.php如果看到输出
</>复制代码
array(1) { "result" => string(30) "Hello 开发者, this is Luke."}那么恭喜你!你的 rpc 服务端和客户端已经搭建好了。现在将它应用到正式项目中吧。
Workerman 与 Swoole
作为 PHP 的常驻方案,两个都非常优秀,而 Swoole 在社区的活跃度比 Workerman 高。但因为两者性能不分伯仲,而且 Workerman 是用纯 PHP 开发,代码更为可控,因此 Luke 选择了 Workerman。然而两者在调用方式非常接近,只要对代码稍加修改就能改成使用 Swoole。
Workerman 的并发性能可以参考这里
后记
在生产环境使用服务化架构,通信部分除了协议外,还要注意加密。这部分 Luke 现在还没有提供,用户可以用简单的加密算法自己实现。
当服务变多后,还需要添加自动发现的功能,这点在 Luke Client 的项目主页提供了一些思路。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28186.html
相关知识
从前端到后端——完整的Web开发指南
使用PHP构建动态网站的技术指南
[含文档+PPT+源码等]精品基于PHP实现的鲜花批发销售网站的设计与实现
手把手教你制作INS风自然干花花篮,美得不要不要的
揭秘PHP花店系统源码:轻松搭建个性化线上花店
老树新花:旧有项目的简易前端资源缓存处理
毕业设计花店网站怎么用php做
PHP动态网站开发项目实战
如何打造一个高效的鲜花售卖网站——SSM框架指南
“花朵分类“ 手把手搭建【卷积神经网络】
网址: 手把手教你5分钟用 PHP 搭建一个高性能服务化后端框架 https://www.huajiangbk.com/newsview949281.html
上一篇: PHP互联网项目搭建:前端与后端 |
下一篇: 如何利用PHP快速搭建微信小程序 |
推荐分享

- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039