关于C++、PHP和Swoole-韩天峰
昨天和一个前同事聊天,各种吐槽PHP,吐槽Swoole,他认为PHP到处是坑,PHP局限很大。PHP+Swoole不适合做高并发服务器,C+Swoole才是最好的方案。C++有各种数据结构,C++可以开线程,C++可以共享对象。看来有必要好好得说明一下了。
PHP比C/C++或Java少了什么?多线程,多线程,多线程……
是的。PHP比C/C++、Java少了多线程。PHP只有多进程的方案,所以PHP里的全局变量和对象不是共享的、数据结构也不能跨进程操作、Socket文件描述符不能共享等等。所以PHP有局限?
多线程看似比多进程要强大很多,实际上我可以负责任的告诉你,多线程带来的坑更多。
- 数据同步问题会让你崩溃的。要么就牺牲性能到处加锁,要么就用地狱难度的无锁并发编程,据我所知目前国内能掌握此项技能的人凤毛麟角。
- 不要以为加锁就万事大吉了,你会在死锁问题上栽个大跟头。当你的程序逻辑复杂后,锁越来越难控制了,一旦死锁你的程序基本上就完了。
- 某个线程挂了那所有线程都会退出
- 配合进程间通信,基本上你可以实现任意的数据共享。比如利用一个进程专门存数据结构和对象,其他进程的数据操作全部投递到此进程来
- 多进程不需要锁
- 多进程可以使用共享内存的数据结构实现一些多线程的功能。如Swoole提供的Table、Atomic可以实现数据共享,但成本很低。未来还会加入共享内存队列
所谓PHP限制了Swoole,这完全是无稽之谈。合理利用Swoole提供的Table、Atomic、SendMessage/PipeMessage、Task完全可以实现异步非阻塞的代码逻辑。
C++写出来的程序性能更好?
这完全是盲目的迷信,密集计算的程序C++确实是有优势的。而并发服务器核心是IO,并非大规模密集运算。C++从语言层面来看并没有什么优势。另外C++中的大部分数据结构在PHP中都有对应的实现,实在不行自己写个专门的扩展也能解决之。
高并发的服务器单机能维持10W连接、每秒可处理3-5W笔消息收发。这种性能水准已经可以应用在BAT的核心系统上了。
开发效率快的意义是什么?
这位同事还说PHP开发Server虽然比C++快了,但是追求性能的极致还是要用C++。我要告诉你效率高了究竟意义何在。开发一套好程序不是一件容易的事情,需要程序员投入大量时间和精力。开发效率提升的意义并不是简单的我可以更少时间完工,而是剩下的时间你可以增加单元测试、修复BUG、提升用户体验、完善细节、提供配套工具、优化性能、增加关键日志、增加监控报警、增加容灾方案。
关于C++、PHP和Swoole-韩天峰相关推荐
- 【SDCC讲师专访】Swoole开源项目创始人韩天峰:PHP是最好的编程语言
摘要:SDCC 2015召开在即,大会前夕,笔者联系上了韩天峰,请他分享他与PHP的不解之缘并解读PHP的发展现状.关于PHP7和HHVM的性能之争,在他看来,PHP7才是未来的方向. 韩天峰,车轮互 ...
- swoole并没有你说的那么好,@韩天峰
这两年"世上最好的语言"PHP诟病于连接处理性能上,在热门语言排行榜上已显得有些后劲不足. 特别是在公司内部也掀起了一股php转go的潮流,那么作为PHP的拥护者,我内心是拒绝的. ...
- PHP 异步并行编程_韩天峰
2019独角兽企业重金招聘Python工程师标准>>> PHP 异步并行编程_韩天峰 韩天峰(Rango)多玩游戏平台技术负责人,swoole开源项目创始人.PHP的异步并行编程,介 ...
- 关于PHP程序员技术职业生涯规划--swool大神韩天峰
关于PHP程序员技术职业生涯规划–swool大神韩天峰 看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些, ...
- 东北师范大学计算机学院晓辉,东北师范大学计算机科学与信息技术学院研究生导师简介-韩文峰...
东北师范大学计算机科学与信息技术学院研究生导师简介-韩文峰东北师范大学 免费考研网/2016-04-15 姓名 韩文峰 职称 副教授 专业 计算机科学与技术 办公室 计算机科学与信息技术学院422室 ...
- 2019年8月23日 星期五(韩天峰的swoole)
Swoole:面向生产环境的 PHP 异步网络通信引擎 使 PHP 开发人员可以编写高性能的异步并发 TCP.UDP.Unix Socket.HTTP,WebSocket 服务. Swoole 可以广 ...
- 韩天峰php教程,韩天峰 - Swoole4-全新的PHP编程模式
展开查看详情 1.Swoole 4.0 PHP @hantianfeng Rango- 2.一. Go + Chan 全新协程编程模式 二. Swoole 4.0 新版本协程实现原理 三. Swoft ...
- 2017年PHP程序员未来路在何方——韩天峰
PHP 从诞生到现在已经有20多年历史,从Web时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js . GO . Python 不断地在挑战 PHP 的地位.这些技术的推 ...
- 2019年7月2日 星期二(韩天峰的建议)
我的编程之路轨迹就是 C语言(起始) -> Java(过客)-> PHP(主)-> C语言(终点). 编程语言专注于一个就行了,Java.PHP.Python.Ruby 任意一个都行 ...
- php级差,韩天峰(Rango)的博客
很多纯PHP开发的后端框架中都使用了pcntl扩展提供的信号处理函数pcntl_signal,实际上这个函数的性能是很差的.首先看一段示例代码: declare(ticks = 1); pcntl_s ...
最新文章
- 12行代码AC-Leecode 598. 范围求和 II——Leecode每日一题系列
- 从数据结构到算法:图网络方法初探
- 一套提取自 Ant Design 的优质图标
- html video拖放设置,HTML5新特性以及video和audio标签和拖放笔记
- Graph-Bert:没有我Attention解决不了的
- c语言static的用法_一文轻松掌握,单片机中C语言的数据存储与程序编写
- Java 8 新日期时间 API ( 上 ) – 本地日期时间
- python重写和装饰器_Python | 老司机教你 5 分钟读懂 Python 装饰器
- AWVS Docker版本和NESSUS Docker版本安装
- Linux学习12—文件服务
- android打开手机自带浏览器,【Appium】打开手机自带的浏览器
- hive sql alter table 修改表操作小记
- 电子计算机技术人才需求,电子与信息技术专业人才需求调研报告.pdf
- linux宝塔重新安装,Linux服务器Windows系统 安装和卸载宝塔面板
- 多重循环(图形打印2)-C语言
- Java异常继承层次图
- GIt+jenkins代码自动上线
- 告诉大家一个不买到假U盘的方法
- 什么是LDO的线性调整率和负载调整率?
- XLOOKUP如何同时根据横坐标和纵坐标查找值?