这样理解 Beego 和 PHP 框架的一个不同点对不对?

PHP 是每次请求从入口文件执行,响应返回后就结束了一次生命周期,而 Beego 是常驻运行的,因此它们有一个很大的不同,就是 beego 里可以很容易进行异步的处理。

比如一个请求,中间有四个逻辑,其中第二个逻辑就可以返回数据了,如果是 PHP ,通常要同步的执行完后面的步骤再返回数据(假如不用消息队列异步处理),而 beego 里,可以使用 go 关键字异步执行后面的逻辑,这样响应上 beego 会快一点?

是不是这样。

开满天机
浏览 540回答 3
3回答

慕码人8056858

你的理解大体正确。有一些细节:1) PHP/PHP-FPM是多进程模式。 每个进程在同一时刻只能处理一个客户端请求。但服务器可以同时开几十上百个PHP-FPM进程,这样能同时处理多个请求。 这些请求涉及到IO操作(读写数据库,curl请求其它接口等)时,会导致当前进程阻塞,操作系统会让出CPU给其它进程。 2) GO是(多线程/协程) +管道+ 多路复用模式。 协程可以共享进程内的数据。占内存极少。从CPU调度上看,和进程类似。多路复用进一步提高了IO的效率。GO协程搭配管道简化了并发编程。 GO比PHP容易优化在于:1,GO可以方便实现单服务器全局缓存 2,在一次请求内,可以根据需要开多个协程并发处理子任务。 3, GO的内存开销更少。

ibeautiful

表面上是这样吧~ 【通常要同步的执行完后面的步骤再返回数据(假如不用消息队列异步处理)】这句话不严谨~ 了解下ob_flash()

波斯汪

可以这么理解。PHP确实只能同步(排除pthread和开子进程情况)golang在返回响应之后还是可以做其他事情的。用 go func 开新携程处理
打开App,查看更多内容
随时随地看视频慕课网APP