请问要用php做一个API公共服务需要注意什么问题?

我们公司现在要做一个语音识别相关的API服务,内部调用的是百度语音识别的REST api,然后拿到识别后的文本后,经过自己的其它加工处理,返回一些知识点标签之类的结果给调用方。

由于之前没有做API方面的经验,请教下php适合吗?主要是怕高并发的问题,需不需要考虑多线程之类的?

(主要是想了解下应用程序这边有没有什么问题,硬件服务器环境的高可用架构会做的。)

多谢!

阅读 4.2k
8 个回答

1.APi 首先注重的是安全方面的信息 所以加key和sign是必须可少的。
2.APi 与对方定义好入参和出参,定义好格式(最好提前书写好wiki)
3.你们这边应该还回有数据库操作,书写业务逻辑,事务和回滚机制要做好
4.要有日志,要有监控,报警系统。
5.写接口,记得连接好PDO的来处理,防止sql注入等问题。
6.至于并发问题,你们可以在nginx层做处理,从DNS方面处理,PHP这块无需过多关注
7.API扩展,把功能模块单独组装,看是否需要redis,memcache,yac这种缓存服务。
8.单独拉出来几台服务器跑API,还有就是做好防止接口被刷,你们监测节点,如果某个IP防止有问题,就引流到独立的一台服务器(这台服务器不参与业务)等等,
9.你们可以考虑下消息队列,同步服务,swoole、rabbitMQ供你参考
总结:最主要来看1.安全 2.日志 3.业务逻辑 4.nginx层处理 5.稳定性

没有合不合适,只有如何去做,PHP也可以做,Java也可以做,Python也可以做,主要看你的业务架构对应的技术架构的设计,你已经做了HA了,所以在流量和可用上至少有个方案处理了,PHP的API设计,大部分是短连接,在逻辑处理上响应速度也比较快,至于性能,可以选择使用PHP7或者HHVM,多线程从业务架构角度来分析看看吧。

不需要考虑性能并发这些, PHP足以. 尤其处理语音并不是在你的服务器上.

并发估计是上不去的 你后台server http 请求百度接口 消耗的资源比较大 估计几百的并发 你就得发送几百个请求到百度接口 服务器可能会瞬间cpu变得很高 因为你调用的接口应该是要传送数据过去 然后对端解析的吧 这种业务耗时不好预估 可能并发量大一点 你发送的出口都会有问题

我觉得折中一点的方案是你这边后台搭一个任务队列服务,从而限制一下并发数,做一下异步的任务进度回显或者提示

这样并发高的时候控制权还在你自己的配置里,可以保证服务至少不会挂掉,只是并发高,大家需要等待的时间长一点

一般调用人次频率不高的话是不需要考虑并发问题的,大并发问题,同时语音识别服务也不是你们真正意义上提供的,所以只用一段小脚本就可以啦。如果觉得用户多,在访问页那里加个CDN就行了。

新手上路,请多包涵

并发高了可以考虑swoole。不限于php的话,可考虑go

别动不动就是什么并发,你调百度的接口还扯什么并发,你要不先问问百度给你多少并发,就一个语音接口,而且还是调百度的,我都不想说什么,你既然这样问说明你不会php,与其问这个问题还不如先问问你会啥,swoole说百万并发,你能做的到吗

补充:我希望像题主还有您一样可爱的朋友们提问之前能够先阅读一下sf的一些提示,有些问题建议先自己百度,谷歌钻研一下再来sf提问,现在sf好像已经成了伸手党的天堂了,明明百度,谷歌都能简单解决的问题都来sf提问,毫无营养,sf是技术研讨区,用来填补技术漏洞的,而不是来做伸手党的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题