我之前从事PHP开拓已经6年了,大多数韶光都是从事做事器各项事情,一贯想考试测验Go还没找到得当的机会,转Go并不是说PHP不好,而是一贯做有点找不到激情了,恰好公司有个项目是Go的就接管过来了

PHP与Go的大略

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

php转PHP转GO的阅历和意见 CSS

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的资料或学习地方可以推举一下。