您的位置 首页 php

PHP转GO的经历和看法

我之前从事PHP开发已经6年了,大多数时间都是从事服务器各项工作,一直想尝试Go还没找到合适的机会,转Go并不是说PHP不好,而是一直做有点找不到激情了,正好公司有个项目是Go的就接受过来了

PHP与Go的简单

PHP近几年都是用PHP+Swoole开发,也是见证Swoole社区生态的发展,下面的PHP都是基于Swoole与Go的对比来聊,具体仔细的可以上网查找详细的对比

1、关于语言

Golang使用静态语言,编写麻烦,单效率高,多用于io密集型计算

Swoole PHP是动态解释执行的,语言性能较差,不适合密集计算程序

2、关于IO

Golang使用单线程eventloop处理IO事件,多线程协程调度运行用户代码

Swoole使用多线程eventloop处理IO事件,多进程执行用户代码

3、关于协程

Golang语言层面支持多线程,使用多线程调度协程,可以实现堆栈文件符共享,但是容易造成数据干扰在使用时需要加锁机制等

Swoole语言层不支持多线程,使用单线程实现协程调度,每个线程数据是单独的不存在数据干扰。

4、关于运行模式

Golang是多线程运行,有超全局变量,有数据干扰问题,可以数据共享

Swoole是多进程运行,没有超全局变量,只有进程级别的变量,没有数据干扰问题,要自己使用 table等实现数据共享

PHP与GO的看法

PHP+Swoole的开发效率来说是很快的,学习成本很低,只需要学习一下Swoole的协程、网络编程和开发中的注意事项,现在的各大主流PHP框架都已经支持了Swoole,可以让PHP常驻内存,性能上有显著的提升,如果想做PHP服务器优化建议可以从这里入手,效果也是显而易见的,还能学习了解Swoole。

相比换语言来说,用Swoole更能在短时间内见效,项目线上遇到问题还是在可控范围。同时基于Swoole的框架也支持了连接池(Redis与MYSQL),这些都是比传统PHP-FPM更有优势,性能上也会更优一下些,同时还能改掉一些在FPM上开发的随意性格,例如使用exit函数,具体可看Swole的禁用函数说明。

更重要的一点是在Swoole上能看到很多GO的身影,例如协程go函数,都是借鉴GO的思想,从这里入手说不定能容易轻松一些。

php实例

 go(function () {
    // 
});  

Golang实例

 go func() {
    //
}()  

使用Go这段时间,还是有一点点不习惯,因为Go既不算面向对象也不算面向过程,更多的是考虑怎么去用它,语法更加严谨,生态也是很丰富的,运行的项目性能的确是很好,PHP有composer,Node有npm,GO有mod,所以生态上GO也已经很丰富了。

性能: Go的二进制文件会生成一个长时间运行的进程,这意味着每个请求和数据库连接的启动成本很低。这使得Go在处理大量的并发请求时能保证极快的速度,因为Go语言(goroutines模块)专为网络和多核计算而设计。

Go可以编译出一个小巧便携的二进制文件。这使得Go非常适合在Docker容器中使用。部署我们的Go容器只需几秒钟,因为它们的体积很小(大多数是4-5MB),并且由于是静态链接,因此在容器内不需要OS或运行时依赖,不用当心代码在服务器上泄漏了。

Go是类型严格的。这让代码中的内部通信更为可靠,也有助于在构建期间捕获异常,而不是在运行期间。

总结

语言只是一种工具没有好坏之分,也没什么可以性,只有合不合适之分,能发挥自身最高的价值才是好语言,适合自己的才是最好的。如果大家有什么学习GO的资料或学习地方可以推荐一下。

文章来源:智云一二三科技

文章标题:PHP转GO的经历和看法

文章地址:https://www.zhihuclub.com/149630.shtml

关于作者: 智云科技

热门文章

评论已关闭

4条评论

  1. I must thank you for the efforts you’ve put in writing this site.
    I am hoping to see the same high-grade blog posts from you later
    on as well. In fact, your creative writing abilities has inspired me to get my own, personal site now ;
    )

  2. Hi! I know this is kinda off topic however , I’d figured I’d ask.
    Would you be interested in exchanging links or maybe guest authoring a blog post or vice-versa?
    My blog goes over a lot of the same topics as yours and I
    think we could greatly benefit from each other.
    If you are interested feel free to send me an email. I look forward to hearing
    from you! Fantastic blog by the way!

  3. Hey would you mind letting me know which web host you’re utilizing?
    I’ve loaded your blog in 3 completely different web browsers and I must
    say this blog loads a lot faster then most. Can you recommend a good internet hosting provider at a
    reasonable price? Kudos, I appreciate it!

  4. With havin so much written content do you ever run into any problems of plagorism
    or copyright violation? My blog has a lot of exclusive content I’ve either created myself or outsourced but it
    appears a lot of it is popping it up all over the internet
    without my authorization. Do you know any techniques to help stop content from being
    stolen? I’d certainly appreciate it.

网站地图