昨天和一个前同事聊天,各种吐槽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-韩天峰相关推荐

  1. 【SDCC讲师专访】Swoole开源项目创始人韩天峰:PHP是最好的编程语言

    摘要:SDCC 2015召开在即,大会前夕,笔者联系上了韩天峰,请他分享他与PHP的不解之缘并解读PHP的发展现状.关于PHP7和HHVM的性能之争,在他看来,PHP7才是未来的方向. 韩天峰,车轮互 ...

  2. swoole并没有你说的那么好,@韩天峰

    这两年"世上最好的语言"PHP诟病于连接处理性能上,在热门语言排行榜上已显得有些后劲不足. 特别是在公司内部也掀起了一股php转go的潮流,那么作为PHP的拥护者,我内心是拒绝的. ...

  3. PHP 异步并行编程_韩天峰

    2019独角兽企业重金招聘Python工程师标准>>> PHP 异步并行编程_韩天峰 韩天峰(Rango)多玩游戏平台技术负责人,swoole开源项目创始人.PHP的异步并行编程,介 ...

  4. 关于PHP程序员技术职业生涯规划--swool大神韩天峰

    关于PHP程序员技术职业生涯规划–swool大神韩天峰 看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些, ...

  5. 东北师范大学计算机学院晓辉,东北师范大学计算机科学与信息技术学院研究生导师简介-韩文峰...

    东北师范大学计算机科学与信息技术学院研究生导师简介-韩文峰东北师范大学 免费考研网/2016-04-15 姓名 韩文峰 职称 副教授 专业 计算机科学与技术 办公室 计算机科学与信息技术学院422室 ...

  6. 2019年8月23日 星期五(韩天峰的swoole)

    Swoole:面向生产环境的 PHP 异步网络通信引擎 使 PHP 开发人员可以编写高性能的异步并发 TCP.UDP.Unix Socket.HTTP,WebSocket 服务. Swoole 可以广 ...

  7. 韩天峰php教程,韩天峰 - Swoole4-全新的PHP编程模式

    展开查看详情 1.Swoole 4.0 PHP @hantianfeng Rango- 2.一. Go + Chan 全新协程编程模式 二. Swoole 4.0 新版本协程实现原理 三. Swoft ...

  8. 2017年PHP程序员未来路在何方——韩天峰

    PHP 从诞生到现在已经有20多年历史,从Web时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js . GO . Python 不断地在挑战 PHP 的地位.这些技术的推 ...

  9. 2019年7月2日 星期二(韩天峰的建议)

    我的编程之路轨迹就是 C语言(起始) -> Java(过客)-> PHP(主)-> C语言(终点). 编程语言专注于一个就行了,Java.PHP.Python.Ruby 任意一个都行 ...

  10. php级差,韩天峰(Rango)的博客

    很多纯PHP开发的后端框架中都使用了pcntl扩展提供的信号处理函数pcntl_signal,实际上这个函数的性能是很差的.首先看一段示例代码: declare(ticks = 1); pcntl_s ...

最新文章

  1. 12行代码AC-Leecode 598. 范围求和 II——Leecode每日一题系列
  2. 从数据结构到算法:图网络方法初探
  3. 一套提取自 Ant Design 的优质图标
  4. html video拖放设置,HTML5新特性以及video和audio标签和拖放笔记
  5. Graph-Bert:没有我Attention解决不了的
  6. c语言static的用法_一文轻松掌握,单片机中C语言的数据存储与程序编写
  7. Java 8 新日期时间 API ( 上 ) – 本地日期时间
  8. python重写和装饰器_Python | 老司机教你 5 分钟读懂 Python 装饰器
  9. AWVS Docker版本和NESSUS Docker版本安装
  10. Linux学习12—文件服务
  11. android打开手机自带浏览器,【Appium】打开手机自带的浏览器
  12. hive sql alter table 修改表操作小记
  13. 电子计算机技术人才需求,电子与信息技术专业人才需求调研报告.pdf
  14. linux宝塔重新安装,Linux服务器Windows系统 安装和卸载宝塔面板
  15. 多重循环(图形打印2)-C语言
  16. Java异常继承层次图
  17. GIt+jenkins代码自动上线
  18. 告诉大家一个不买到假U盘的方法
  19. 什么是LDO的线性调整率和负载调整率?
  20. XLOOKUP如何同时根据横坐标和纵坐标查找值?

热门文章

  1. 计算机B类会议排名,计算机学科会议排名
  2. Web 应用程序安全检查表
  3. 我与AWS Proserve团队的故事
  4. 小技巧-不使用js制作高级足球比赛赛程表
  5. 广域网技术——iFIT
  6. 通过Gazebo仿真学TurtleBot3(四)——简单的/cmd_vel控制
  7. UniDAC 基础 英文 原文【就不传其中的图片了】
  8. PostgreSQL 分区表一点也不差
  9. ISP Pipeline lens shading
  10. 学校计算机教室解说词词,小学各专用教室解说词.doc