鍍金池/ 問答/Java  PHP  HTML/ 請問要用php做一個API公共服務需要注意什么問題?

請問要用php做一個API公共服務需要注意什么問題?

我們公司現(xiàn)在要做一個語音識別相關的API服務,內部調用的是百度語音識別的REST api,然后拿到識別后的文本后,經(jīng)過自己的其它加工處理,返回一些知識點標簽之類的結果給調用方。

由于之前沒有做API方面的經(jīng)驗,請教下php適合嗎?主要是怕高并發(fā)的問題,需不需要考慮多線程之類的?

(主要是想了解下應用程序這邊有沒有什么問題,硬件服務器環(huán)境的高可用架構會做的。)

多謝!

回答
編輯回答
枕邊人

1.APi 首先注重的是安全方面的信息 所以加key和sign是必須可少的。
2.APi 與對方定義好入?yún)⒑统鰠?,定義好格式(最好提前書寫好wiki)
3.你們這邊應該還回有數(shù)據(jù)庫操作,書寫業(yè)務邏輯,事務和回滾機制要做好
4.要有日志,要有監(jiān)控,報警系統(tǒng)。
5.寫接口,記得連接好PDO的來處理,防止sql注入等問題。
6.至于并發(fā)問題,你們可以在nginx層做處理,從DNS方面處理,PHP這塊無需過多關注
7.API擴展,把功能模塊單獨組裝,看是否需要redis,memcache,yac這種緩存服務。
8.單獨拉出來幾臺服務器跑API,還有就是做好防止接口被刷,你們監(jiān)測節(jié)點,如果某個IP防止有問題,就引流到獨立的一臺服務器(這臺服務器不參與業(yè)務)等等,
9.你們可以考慮下消息隊列,同步服務,swoole、rabbitMQ供你參考
總結:最主要來看1.安全 2.日志 3.業(yè)務邏輯 4.nginx層處理 5.穩(wěn)定性

2018年6月14日 14:14
編輯回答
賤人曾

一般調用人次頻率不高的話是不需要考慮并發(fā)問題的,大并發(fā)問題,同時語音識別服務也不是你們真正意義上提供的,所以只用一段小腳本就可以啦。如果覺得用戶多,在訪問頁那里加個CDN就行了。

2017年4月27日 13:48
編輯回答
綰青絲

不需要考慮性能并發(fā)這些, PHP足以. 尤其處理語音并不是在你的服務器上.

2018年3月3日 08:47
編輯回答
尛憇藌

別動不動就是什么并發(fā),你調百度的接口還扯什么并發(fā),你要不先問問百度給你多少并發(fā),就一個語音接口,而且還是調百度的,我都不想說什么,你既然這樣問說明你不會php,與其問這個問題還不如先問問你會啥,swoole說百萬并發(fā),你能做的到嗎

2018年6月15日 23:40
編輯回答
遲月

并發(fā)估計是上不去的 你后臺server http 請求百度接口 消耗的資源比較大 估計幾百的并發(fā) 你就得發(fā)送幾百個請求到百度接口 服務器可能會瞬間cpu變得很高 因為你調用的接口應該是要傳送數(shù)據(jù)過去 然后對端解析的吧 這種業(yè)務耗時不好預估 可能并發(fā)量大一點 你發(fā)送的出口都會有問題

我覺得折中一點的方案是你這邊后臺搭一個任務隊列服務,從而限制一下并發(fā)數(shù),做一下異步的任務進度回顯或者提示

這樣并發(fā)高的時候控制權還在你自己的配置里,可以保證服務至少不會掛掉,只是并發(fā)高,大家需要等待的時間長一點

2017年8月21日 16:21
編輯回答
安淺陌

并發(fā)高了可以考慮swoole。不限于php的話,可考慮go

2017年5月6日 23:03
編輯回答
焚音

沒有合不合適,只有如何去做,PHP也可以做,Java也可以做,Python也可以做,主要看你的業(yè)務架構對應的技術架構的設計,你已經(jīng)做了HA了,所以在流量和可用上至少有個方案處理了,PHP的API設計,大部分是短連接,在邏輯處理上響應速度也比較快,至于性能,可以選擇使用PHP7或者HHVM,多線程從業(yè)務架構角度來分析看看吧。

2017年1月7日 08:43
編輯回答
安于心

補充:我希望像題主還有您一樣可愛的朋友們提問之前能夠先閱讀一下sf的一些提示,有些問題建議先自己百度,谷歌鉆研一下再來sf提問,現(xiàn)在sf好像已經(jīng)成了伸手黨的天堂了,明明百度,谷歌都能簡單解決的問題都來sf提問,毫無營養(yǎng),sf是技術研討區(qū),用來填補技術漏洞的,而不是來做伸手黨的。

2018年4月4日 18:44