C++《使用php轻框架-lumen搭建api服务》

一. 源起

前面负责吗一个出外类的app构建micro-service架构的后端服务。其中当php框架技术选型的有些题目。当时底背景如下:

  1. 【坑多】第一修业务线使用ci框架,发现会受很多坑,并且连续不爱保障(变量的意图范围)。
  2. 【性能不好】php作为主要的逻辑后端,性能上想也有于高的包。
  3. 【耦合重,不易扩展】当时调研了silex,slim,laravel等等,最终以促成效率要因自己支付的轻量级框架形成了第一版本。总结回顾当时的痛点
    1)配置线上和线下多单本子的维护(需要来回切换,出现了上丝后由配备没有check到招问题回滚的气象)
    2)mysql,memcache,log,redis的车轮还是团结前往的,实际应用发现先后的健壮性不足

二. 遇见Laravel和Lumen

或是由c++后端平的背景,之前在腾讯也是采用c++实现cgi来就web服务。我知上落实app后端API服务比较好之框架应该是如此的

  1. 好推模块,以升级效率
  2. 复好之老三正在软件的保管,类似于npm对于nodejs,pip对于python

Laravel在海外的市场份额是率先,文档全面细致,但是在中国不顶盛。

Lumen是Laravel的剪版本,为了赢得属性上再度好之入账。

lumen VS silex VS slim

lumen VS laravel

与此同时,有了依据composer的laravel和lumen,我们尽管好定制好之老三正工具以来,比如:

swoole
C扩展实现之PHP异步并行网络通信框架,可以还定义PHP。过去PHP只能做Web项目,现在发矣Swoole。任意服务器端程序都可为此PHP来写。
swoole_framework,基于swoole扩展开发的一个出框架
php-webim,基于swoole实现的Web即经常聊天工具,支持websocket+http
comet长链接推送,可以发送文字内容及图片
workerman,类似swoole,不过是纯PHP实现之,官网有诸多示范项目。底层功能于swoole少一些,但相对简单,应用规模的力量比较swoole丰富。
zephir,这个略带厉害,可以据此类似PHP的一样种植中间代码写序,然后自行转为C++,并作为扩大来运转。可以解决PHP语言密集计算性能差之问题。
redis-async,基于swoole扩展写的异步redis客户端,压测起来性能及Go语言之类的几近

php好之车轮们

三. 主要模块使用说明

  1. 布置管理
    lumen使用了.env文件来保护大局的危优先级变量。变量取值.env中之优先级最高。(https://github.com/vlucas/phpdotenv)
    ,这个布局一般存放online的配备,在app/conf文件夹存放offline配置。并且,将.env添加到gitingore可以免online正式环境的部署信息寄存于代码中造成的安全风险

示例:读取
$dotenv = new Dotenv\Dotenv(DIR);
$dotenv->load();
$s3_bucket = getenv(‘S3_BUCKET’);
$s3_bucket = $_ENV[‘S3_BUCKET’];
$s3_bucket = $_SERVER[‘S3_BUCKET’];

  1. 数据库
    以取得更好的施行效率,lumen默认使用了QueryBuilder万一未是因ORM的Eloquent来和数据库通讯。其规律是提供了构建sql语句之高档语法,类似的家伙要:medoo

  2. 文件系统操作
    lumen支持本地文件与说存储的读写,通过配备即可切换。

lumen文件系统支持
  1. cache
    lumen支持内存,文件,memcached,redis多种kv存储。
lumen cache服务
  1. 排和计划任务
    一个雅普遍的需要就是是:首糟糕注册,希望同天后发一个提醒的信息来提升用户更登录的作为。
    这个需要通过lumen可以十分好之兑现
    1)注册请求拼装好必要的job信息,填写delay时间(如:24小时)放入任务队列beanstalkd
put job入队列



2)当job到达预定时间会进入ready队列,这时通过每分钟运行的计划任务可以执行对应的job任务(也可以使用linux自带的crontab实现)



计划任务
  1. 以初的composer管理的老三方组件

    lumen使用到的可选的零部件列表

小心:在上线之前需要优化composer的autoloader

composer dump-autoload –optimize
勿加以这同一抉择项,你也许会见发现20%顶25%底性C++损失。

四. 参考资料

  1. Laravel中文官网
  2. Laravel英文官网
  3. 电子书《Easy Laravel
    5》
  4. 互联网micro service架构
  5. 运beanstalk搭建筑队服务