请教下关于php异步编程的问题

发布于 2022-09-06 15:28:33 字数 858 浏览 20 评论 0

首先我是遇到一个场景问题想解决,我并不是确定是不是线程能解决.. 因为对这方面理解不深。希望大牛指教。
我的问题是:
现在我们要对外提供一个API,是用户上传一段语音文件,API经过处理返回几组语音文件中包含的关键词,也可以说是知识点、标签之类的。
API内部是拿到语音文件的二进制数据后,去调用百度的语音识别公共API服务转化为文本,然后拿文本去调我们自己做的一个文本识别标签的内部服务,最后输出给调用方的就是一些标签信息了。

因为是阿里云服务器,官方说是不限制上行带宽,但是我们内部去请求百度语音API时,是出流量的,比如只买了固定10M。

这样当并发量上来时,服务器往百度上出的流量就相当惊人了,虽然我们目前只是60S内的短语音文件...

这块的资源瓶颈我的理解是:

1.带宽不够,是否换成按量付费带宽就可以永久解决呢?
2.I/O是否也有瓶颈?我对操作系统原理不甚了解...(目前正在尝试啃计算机基础...)
3.其它比如CPU,内存资源是否也会有问题?

之前有大神指点说可以换成异步通知回调,自己控制并发流量。不过我们还是想实时的给用户返回结果,考虑到用户的场景不是很适合去主动查询等待结果。

回到线程这个点上,我其实想大概实现的是:这个请求能不能不要一直占着一个进程?当我去请求百度时,这个进程可否挂起睡眠不占用资源,当百度有返回结果时,激活这个进程继续工作。而且百度的API也是有异步回调模式的,假如我也不是在线等待百度的处理结果,而是异步接受到通知然后继续开启之前的进程继续工作,就更好了。

之前看过一些关于并发的内容,了解到有一个Swoole:面向生产环境的 PHP 异步网络通信引擎。听起来有点意思,不过不知道我这个场景到底适不适合,能不能解决最终问题。

可能我描述的槽点很多,还请见谅...

还请大牛们指点下方向,多谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

早乙女 2022-09-13 15:28:34

你的目的其实就是削峰。削峰,可以用队列。简单理解就好比大坝,外部并发量是不可控的,但是大坝可以将外部的水流量转变为可控的水流量(开闸),以不至于下游冲垮!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文