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

发布于 2022-09-06 02:57:37 字数 237 浏览 18 评论 0

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

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

是不是这样。

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

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

发布评论

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

评论(3

鱼窥荷 2022-09-13 02:57:37

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

GO比PHP容易优化在于:1,GO可以方便实现单服务器全局缓存 2,在一次请求内,可以根据需要开多个协程并发处理子任务。 3, GO的内存开销更少。

零度° 2022-09-13 02:57:37

表面上是这样吧~

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

浅忆 2022-09-13 02:57:37

可以这么理解。PHP确实只能同步(排除pthread和开子进程情况)
golang在返回响应之后还是可以做其他事情的。用 go func 开新携程处理

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