Skip to content

写在前面

Golang

Go VS PHP 利弊分析

Go 相对 PHP 的优点

  1. 性能及资源占用: Go在CPU密集型和IO密集型情况下绝大部分场景比PHP要好很多,一般可以节约 70% 以上的资源
  2. 可维护性:Go语言可读性好,规范明确,可维护性高于PHP。
  3. 生态: Go语言生态要比PHP丰富很多,而且很多是官方提供,更加有保障。

Go 相对 PHP 的缺点:

  1. 安全性: PHP 高于 Go
  2. 对开发人员的要求: Go 要高于 PHP

  3. Go 取代 PHP 是大势所趋

  1. 如果是新项目建议应该优先选择使用 Go 语言
  2. 长线看,如果有人力、且重构成本可接受,建议逐步重构 PHP 项目为 Go 项目。
  3. 掌握 Go 语言在云原生时代有非常大的优势

生态对比

条目 Go PHP
WEB框架 http://github.com/avelino/awesome-go#web-frameworks 40个左右 http://github.com/ziadoz/awesome-php#frameworks 10个左右
依赖管理 GOD, Go Module composer
RPC 框架 gRPC-go、rpcx、hprose-golang grpc C 扩展、hprose-php
代码检查 http://github.com/avelino/awesome-go#code-analysis http://github.com/ziadoz/awesome-php#code-analysis
http://github.com/ziadoz/awesome-php#code-quality
http://github.com/ziadoz/awesome-php#architectural
开发测试 http://github.com/avelino/awesome-go#utilities http://github.com/ziadoz/awesome-php#debugging-and-profiling
单元测试 http://github.com/avelino/awesome-go#testing http://github.com/ziadoz/awesome-php#testing
页面渲染 Go 语言自带模板 http://github.com/avelino/awesome-go#template-engines http://github.com/ziadoz/awesome-php#templating

其他对比

条目 Go PHP 结论
safety 1. Go 对底层有更高的控制权限,风险也更高
2. Go 的goroutine 都是平级的,如果使用不当会导致整个程序崩溃,可以通过规范,CR, 代码检查,封装更加安全的用法来保证
3. Go 程序由于是单进程一直运行,可能会存在内存泄露的情况
1. PHP 运行模式是单进程模式,单个进程挂到不影响其它的进程
2. PHP 每个请求运行完会主动释放内存,不存在内存泄露问题
3. PHP 的高级功能都需要依赖扩展实现,扩展是 C 写的,开发效率低,开发难度大,不好维护,也存在一些安全性问题,但是无法控制。
PHP > Go
CICD 需要重启才能上线,所以需要停止服务 脚本语言,可以单独文件上线不影响程序运行 PHP > GO
语言能力 Go 语言作为一个更加通用型的语言可以实现:
1. 方便的实现并发控制
2. 语言能力看齐 C/C++, 可以调用很多底层功能
3. 语言可以支持多种交互协议
PHP 作为专门为WEB开发而生的语言:
1. 能力集中在业务逻辑开发
2. 高级的功能需要通过C扩展的形式,开发难度大,维护成本高
3. 依赖WEB服务器+ CGI管理,只支持HTTP协议
Go > PHP