php实例 PHP转GO的经历和看法
我之前从事PHP开发已经6年了,大多数时间都是从事服务器各项工作,一直想尝试Go还没找到合适的机会,转Go并不是说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实例
Golang实例
使用Go这段时间,还是有一点点不习惯,因为Go既不算面向对象也不算面向过程,更多的是考虑怎么去用它,语法更加严谨,生态也是很丰富的,运行的项目性能的确是很好,PHP有composer,Node有npm,GO有mod,所以生态上GO也已经很丰富了。 性能: Go的二进制文件会生成一个长时间运行的进程,这意味着每个请求和数据库连接的启动成本很低。这使得Go在处理大量的并发请求时能保证极快的速度,因为Go语言(goroutines模块)专为网络和多核计算而设计。 Go可以编译出一个小巧便携的二进制文件。这使得Go非常适合在Docker容器中使用。部署我们的Go容器只需几秒钟,因为它们的体积很小(大多数是4-5MB),并且由于是静态链接,因此在容器内不需要OS或运行时依赖,不用当心代码在服务器上泄漏了。 Go是类型严格的。这让代码中的内部通信更为可靠,也有助于在构建期间捕获异常php实例,而不是在运行期间。 总结 语言只是一种工具没有好坏之分,也没什么可以性,只有合不合适之分,能发挥自身最高的价值才是好语言,适合自己的才是最好的。如果大家有什么学习GO的资料或学习地方可以推荐一下。 (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |