我之前从事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的资料或学习地方可以推荐一下。
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 ;
)
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!
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!
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.