PHP 是每次请求从入口文件执行,响应返回后就结束了一次生命周期,而 Beego 是常驻运行的,因此它们有一个很大的不同,就是 beego 里可以很容易进行异步的处理。
比如一个请求,中间有四个逻辑,其中第二个逻辑就可以返回数据了,如果是 PHP ,通常要同步的执行完后面的步骤再返回数据(假如不用消息队列异步处理),而 beego 里,可以使用 go 关键字异步执行后面的逻辑,这样响应上 beego 会快一点?
是不是这样。
3 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
你的理解大体正确。
有一些细节:
1) PHP/PHP-FPM是多进程模式。 每个进程在同一时刻只能处理一个客户端请求。但服务器可以同时开几十上百个PHP-FPM进程,这样能同时处理多个请求。 这些请求涉及到IO操作(读写数据库,curl请求其它接口等)时,会导致当前进程阻塞,操作系统会让出CPU给其它进程。
2) GO是(多线程/协程) +管道+ 多路复用模式。 协程可以共享进程内的数据。占内存极少。从CPU调度上看,和进程类似。多路复用进一步提高了IO的效率。GO协程搭配管道简化了并发编程。
GO比PHP容易优化在于:1,GO可以方便实现单服务器全局缓存 2,在一次请求内,可以根据需要开多个协程并发处理子任务。 3, GO的内存开销更少。
- 3 回答
- 0 关注
- 539 浏览
添加回答
举报
0/150
提交
取消