讨论下 PHP 转 go 的水平

2023-12-08 11:05:54 +08:00
 v2li32
今天摸鱼又看到 php 性能不行的帖子,我是专业 phper,也能写 java,python,不爱写 go 是因为不喜欢 go 的语法。


不知道因为性能问题转 go 的人是否深入理解过 php.有没有了解到 php 的常驻模式下运行,了解到 select,epoll,然后在去得出结论 php 性能不行。

都是跑在 linux 下的编程语言,都在用 select,epoll,谁又能差谁很多,不晓得大多数 phper 有没有搞到这一步。

在回到开发效率上,php 真的是 web 语言开发效率第一。
orm ,一对多,多对多关联,起码是把 java 开发效率秒的车尾灯都看不到。


再说项目开发,项目大了,什么动态静态语言开发出来的都是屎山。

不是公司硬性规定,或者自己喜欢学一下 golang ,转 golang 是为了什么。。写 php 的应该都不会喜欢 golang 的写法。

以下 phper 转 go 先评价下自己的 php 评分。

会 curd 一个框架的评 a
...+多个框架基础的 redis 队列,自定义进程都能搞评 b
...+可以随意很快上手不了解的框架评 c,
...+可以随意点击框架/扩展包看个大概流程评 d,
...+了解 php 为什么跟 java 比性能不行,linux 下调试追踪,会多进程网络编程评 e,
...+能看懂部分 php 源码实现评 f.

所以你(phper)转 go 在 a,b,c,d,e,f 那个层次呢。
10260 次点击
所在节点    PHP
83 条回复
monkeyWie
2023-12-08 15:43:07 +08:00
同样是脚本语言,写 php 还不如写 node.js
xiaocaiji111
2023-12-08 15:43:15 +08:00
php 开发人员整体水平较低,当然不是说楼主,是以前面试得人员大部分这样,换门语言也够呛。大部分都是 yii 框架和 thinkphp 框架开发使用人员,从没接触过高并发项目。
xuanbg
2023-12-08 15:43:29 +08:00
对于不懂技术的人来说,PHP 确实性能不太行。一个接口要好几秒才能返回数据,知道的人晓得是写 PHP 的人不行,不知道的就只会说 PHP 不行。
yekern
2023-12-08 15:48:37 +08:00
看到你写的在 F, PHP 和 GO 都有在写.主要还是看主体业务有些场景比如后台没有什么请求,业务还不是很复杂 Laravel+Vue 写的飞起.
在比如我司有业务需要处理几百兆的 PDF 账单文件要对账单文件进行分析提取数据入库并且分割 PDF 文件,这时候 PHP 的性能就有点捉急了. GO 很好的处理了这个任务.在有就是写一些简单的爬虫但是需要伪造浏览器指纹 PHP 也麻烦 Go 一个包就解决了.

没有什么哪个好和不好的只有适合不适合.
jonsmith
2023-12-08 15:49:37 +08:00
语言是次要的,关键是生态,比如技术生态、人才市场的生态等。
Nc
2023-12-08 15:50:28 +08:00
不知道我这算不算转了, 原来搞 PHP 后来去搞 Python 爬虫和自动化那一块的业务, 后来公司 Go 项目组 缺人,又帮忙搞 Golang 的项目, 现在 接手 CRM 系统 又回到了 PHP5.6, Tp3.2 的时代. PHP 想换成 8.2 但是吧 里面的东西有点多. 不敢大的挖开,怕散架
shermie
2023-12-08 16:28:01 +08:00
@lesismal 不太认可你的说法 php 实现异步也不用回调啊 io 场景就是 php 的主场 有解决办法的
JKeita
2023-12-08 16:50:50 +08:00
哪个合适用哪个,现在主要是 PHP 岗位少钱也少
lidongyooo
2023-12-08 16:55:51 +08:00
@lifei6671 给你 QPS 算一千吧。1000/200=5 ,一台 8c+16g 的服务器就给 5 个人用就爆了?老子 2c+4g 每个接口都 N+1 ,性能都比你好。操了真想不明白。所以要么你在吹牛皮,要么内部有人恶意增加公司运营成本。
joyanhui
2023-12-08 16:57:57 +08:00
OP 认为都是 epoll 没差别,php 性能够用,甚至觉得 php 开发效率最高.....

他能写 java python, 但是又说出 `起码是把 java 开发效率秒的车尾灯都看不到` 这句话。


所以楼上的各位,我觉得,楼主不一定能理解你们在说什么。
lesismal
2023-12-08 17:14:23 +08:00
@shermie #47

我搜了下,PHP 也有协程,所以我猜你是指 PHP 协程?
如果是这样,那我补充一点,除了 erlang 、golang ,多年前 lua 或者 c/cpp 也早就有协程或者库,但都是手动挡,比如 lua 的 yield resume ,我刚才搜的帖子里 PHP 的方式也是需要手动 yield 。
近几年 js py 之类的也搞了 async await 这些。确实,整体看上去是同步代码、顺序可读了。但是,这种手动挡理解起来并不直观,对于步骤层次不多的,个人觉得手动挡协程甚至不如 callback 。
nodejs 还有 Promise 这种,看上去是那个顺序,但并发的时序可能不是那个顺序,很多人因为这个写 bug 、或者理解吃力、或者要自己控制时序时非常麻烦。

很多人可能没有深度使用 erlang 、golang 协程,或者已经习惯了那些手动挡的蹩脚协程,所以 get 不到 erlang 、golang 这种像线程一样的并发有多爽。

Java 的虚拟线程还是啥也是类似协程,但似乎只是解决了语言指令级的调度,系统调用等行为并不会主动出让并可能因为阻塞占用了线程,我没有深入研究、不知道是否理解有误,但好像 Java 至少仍然需要解决大量的底层接口与虚拟线程调度结合的问题,这仍然需要很大的改造。

再补充一些,现实业务不只是 CURD ,PHP 的编程姿势主要是为 Web 服务,一旦有复杂的需求,用 PHP 实现起来会很蹩脚、或者浪费资源,比如游戏

#2 > php 很多业务场景 go 开发起来是无法胜任的

所以我觉得,你这个可能把现象搞错了。现象是 PHP 有众多轮子,并且未必需要高性能或者什么,用 go 去重新做成本收益不划算。就像好些人说企业级只能 Java 一样,其实不是 golang 或者其他不能搞,而是因为 Java 已经形成了成熟的产业链和社区,并且企业级的业务 Java 性能各方面也足够胜任。用 golang 或者其他语言去重造需要很长时间,而现实商业场景,没哪家资本愿意去推动这个。但如果是新团队重新造这些,是可以用 golang 的。字节系大量业务用 golang ,飞书应该也用得挺多的,人家有钱有资源有人才,就是可以搞。
除了极度性能场景是 c/cpp/rust 的天下,或者特殊专用领域,绝大部分的通用领域、绝大部分高并发高性能场景,golang 能搞、PHP 却未必能胜任。
skwyl
2023-12-08 17:16:42 +08:00
只有适合不适合,php 曾经只有进程运行程序太伤了,但是现在的 8.x 总体上是好很多,支持更细粒度的协程,golang 本身是编译型语言,解释型跟编译型两种性能上差异肯定是明显的,这没啥好说的,我小项目喜欢用 php 方便快捷,处理一些性能要求高的就用 go 拆分服务
tutusolo
2023-12-08 17:25:39 +08:00
@jowan 放在外包公司的话,一个熟练的 php 顶 3 个熟练的 java 吧,秒的车尾灯都看不到只是委婉的说法,大概就相当于 php 都到终点了,java 才刚起步
chenchengbin
2023-12-08 17:32:17 +08:00
编译型语言跑不过脚本语言那这个语言可以去死了
baiyi
2023-12-08 17:35:12 +08:00
主要是生态,我要搞云原生,用 php 总是没那么顺畅的
migu
2023-12-08 17:57:16 +08:00
@abcdexx #22 确实,虽然 JPA 框架做多对多这些场景方便,但当初刚用 JPA 的时候,头非常大,后面效率才起来
ElmerZhang
2023-12-08 17:57:33 +08:00
16 年 PHP 转 Java ,被当时的公司逼着转的。后来就是搞 Java 和 Node.js ,20 年逼着现公司从 Node.js 转了 golang 。
离开 PHP 时水平勉强 f 吧。
真正需要转语言来提升性能的,一般不会抱怨 PHP 性能不好,他们会说,我们遇到某某某问题,用 PHP 解决不了了,我们换 Java/Golang 吧。
整天报怨 PHP 性能不好的人,绝大多数用 go 也写不出高性能的 API ,因为他们根本不知道到底性能差在哪里。
99% 的性能问题都和语言无关。
如果你觉得我说的不对,那说明你是那牛逼的绝少数,大神请受我一拜。
glitter1105
2023-12-08 18:05:14 +08:00
语言只有合适不合适
fengfisher3
2023-12-08 18:07:01 +08:00
@lifei6671 你们运维真会赚钱。然后,你们这种垃圾架构,语言真不背锅。
cexll
2023-12-08 18:15:20 +08:00
2023 年以前,我是 phper 觉得 php 就是最牛逼的,虽然也在偷偷学 go ,但是更多是喜欢 go 的语法简单,不像 php 有 swoole swow workerman fiber 各种库 各种语法,php 也能高性能 swoole 安装上性能直接吊打一种静态语言,但是用到极致你会发现它就是不如原生就有的好用,2023 年以后 我学了 ruby rust react ts python 发现确实如最开始入门时 一些大佬说的,什么语言干什么事情,你先学一个入门,需要什么学什么,又不是脑子不够用,学啥不是学

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/998612

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX