在使用 PHP 多年之后,我对 PHP 的优势和劣势已经非常清楚,与后起之秀 Golang 相比,两者已经不在一个重量级。

PHP 更像是 70 kg 级别的选手,脚本语言,极速开发,部署方便,性能可以。

Golang 更像是 90 kg 级别的选手,静态语言,众家所长,部署非常方便,性能非常好。

PHP 的应用主要集中在 Web应用 / API 应用 / 通用脚本。

PHP 部署方面,一般是部署源码。FPM 依赖 Nginx 之类的 Web 服务器;

  对于常驻内存 HTTP Server 方面,Workerman 并未普及,Swoole 贴近底层而面临未来版本升级、维护的高成本。

PHP 性能方面,中小型规模应用完全可接受,但一旦服务器数量增多,和 Java 类静态语言的性能差距就会直接暴露出来。

PHP 服务端编程方面,只有 Pcntl 用于多进程编程,比较简陋,Pthreads 多线程不安全,网络编程门槛高,多数在结合框架基础上才能够做一些工作。

Golang 的应用广阔,Web应用 / Web服务器 / 云计算 / 区块链 / 通过脚本,面对各方面都游刃有余,使用上还能带来脚本语言般的体验。

Golang 部署方面,既可以直接 run 文件运行,也可以编译成二进制运行,既方便也安全。

  不依赖 Web 服务器运行,单文件就可以启动高性能 HTTP Server,资源消耗极少;Golang 实现的流行 Web 服务器有 Caddy。

Golang 性能方面,可以媲美 C++,从一些知名项目也可以看的出来,Docker、Kubernetes、Caddy、TiDB、go-ethereum 等。

Golang 服务端编程方面,官方内置很多网络库,底层不依赖 C/C++ 实现,协程编程模型的 CPU 效率高、易用。

所以对于未来所有的新应用,我是非常建议使用 Golang 进行开发的,PHP 能做的改变不多了。

对于敏捷开发而言,技术栈的积累始终是有价值的,只要找对最合适的地方,比如:一些后台管理系统,PHP 能很好满足这类场景。

我认为从 PHP 迁移到 Golang 的第一步是,用 Golang 开始写一个项目,然后上线。

Refer:PHP_vs_Golang大家怎么看

Tool:在线PHP运行环境

Link:https://www.cnblogs.com/farwish/p/12733329.html

PHP vs Golang ? 想什么呢 ! What Are You Thinking !的更多相关文章

  1. Golang面向API编程-interface(接口)

    Golang面向API编程-interface(接口) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Golang并不是一种典型的面向对象编程(Object Oriented Pr ...

  2. GoLang 的协程调度和 GMP 模型

    GoLang 的协程调度和 GMP 模型 GoLang 是怎么启动的 关于 GoLang 的汇编语言,请查阅 参考文献[1] 和 参考文献[2] 编写一个简单的 GoLang 程序 main.go, ...

  3. 想涨工资吗?那就学习Scala,Golang或Python吧

    [编者按]据薪水调查机构 PayScale 提供的数据显示,掌握 Scala,Golang 和 Python 语言以及诸如 Apache Spark 之类的大数据技术,能带来最大的薪水提升.本文作者为 ...

  4. 异想家Golang学习笔记

    1. 简介 官网:https://golang.google.cn/ 2. 编译器.工具链 编译 go build .\demo.go 编译和执行指令合二为一 go run demo.go 3. 注释 ...

  5. golang不想http自动处理重定向的解决方案

    目录 前言 解决方案 结论 前言     有时候发送http请求不想让库自动帮忙处理重定向,库里面默认的是会把所有重定向都完成一遍,结果就是最后一个没有重定向的请求的结果.因此需要一种方案直接获取首次 ...

  6. 说说Golang的使用心得

    13年上半年接触了Golang,对Golang十分喜爱.现在是2015年,离春节还有几天,从开始学习到现在的一年半时间里,前前后后也用Golang写了些代码,其中包括业余时间的,也有产品项目中的.一直 ...

  7. TODO:Golang指针使用注意事项

    TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...

  8. golang 使用 iota

    iota是golang语言的常量计数器,只能在常量的表达式中使用. iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(io ...

  9. Golang接口(interface)三个特性(译文)

    The Laws of Reflection 原文地址 第一次翻译文章,请各路人士多多指教! 类型和接口 因为映射建设在类型的基础之上,首先我们对类型进行全新的介绍. go是一个静态性语言,每个变量都 ...

  10. Mac下golang开发环境配置

    go语言在开发效率和运行效率中的优势让很多人青睐,所以有倾向打算转向go语言的开发. 下面介绍在Mac OS X中golang的开发环境配置. 1.安装brew brew是一个mac下的由ruby开发 ...

随机推荐

  1. tableau日常使用小技巧

    一.设置数值自定义格式为万 0"."0,"万" #"."#, 万 二.

  2. Women forum两周年有感

    今天是个高兴的日子,Women forum两周年庆. 当Nicole上台分享了她当妈妈的经历时,我感动得要哭了,导致轮到我上台演讲的时候,还沉浸在那种情绪中,导致我脱稿演讲了,于是我就超时了,实在是抱 ...

  3. CDC实战:MySQL实时同步数据到Elasticsearch之数组集合(array)如何处理【CDC实战系列十二】

    需求背景: mysql存储的一个字段,需要同步到elasticsearch,并存储为数组,以便于查询. 如下例子,就是查询预期. PUT /t_test_1/_doc/1 { "name&q ...

  4. WC-Write Combining 合并写技术

    WC-Write Combining 合并写技术 为了提高写效率: CPU在写入L1时,同时用WC写入L2 实验代码: public class WriteCombining { private st ...

  5. KingbaseES V8R6集群备份恢复案例之---备份初始化“can not find primary node”故障

    案例说明: KingbaseES V8R6集群,备库作为repo-path节点,建立类型为'cluster'模式的备份,在执行sys_backup.sh init时,出现"can not f ...

  6. 测试开发之系统篇-Docker常用操作

    Docker容器(Container)的运行基于镜像(image),您可以在Docker Hub上检索,或通过Dockerfile文件自己构建镜像. 首先拉取MySQL官方镜像的最新版(latest) ...

  7. #线性筛,哈希#CF1225D Power Products

    题目 给定一个长度为 \(n\) 的正整数序列 \(a\),问有多少对 \((i,j),i<j\) 使得存在一个整数 \(x\) 满足 \(a_i\times a_j=x^k\) 分析 将 \( ...

  8. #Tarjan,贪心#LOJ 3684 「COCI 2022.3」Usmjeravanje

    题目传送门 分析 可以发现题目实际上求的是最小强连通分量个数. 并且每个强连通分量必然是由最多两段区间 \(a_l\sim a_r,b_L\sim b_R\) 组成的 只要存在一条路 \(b_R-&g ...

  9. #dp or 贪心+堆#CF704B Ant Man

    题目 分析(dp) 考虑到对于一个排列单独抽出 \(1\sim i\) 可能会分成若干段,而贡献一定是固定的,不会影响之后的选择. 首先 \(a,c\) 加上 \(x\),\(b,d\) 减去 \(x ...

  10. 详解SSL证书系列(10)SSL的加密算法

    HTTPS协议的主要功能依赖于SSL,SSL全称为安全套接层(Secure Socket Layer). SSL的功能主要依赖于三类加密算法,散列函数,对称加密和非对称加密.   HASH算法 HAS ...