PHP 不如 C++ 吗?

简介:

昨天和一个前同事聊天,各种吐槽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、提升 用户体验、完善细节、提供配套工具、优化性能、增加关键日志、增加监控报警、增加容灾方案。


来源:51CTO

相关文章
|
10月前
|
安全 Oracle Java
浅谈Java、PHP、C++编程的优缺点
Java 、PHP、C++ 编程语言都是非常流行的编程语言,在开发、Web 开发、移动应用开发等领域都有广泛的应用。
123 0
|
关系型数据库 Shell MySQL
shell 脚本自动编译安装网站环境 nginx1.9.9 php7/8 mariadb10.11 c++ cgi-bin
1.ubuntu 搭建 nginx199 php-fpm7/8 mariadb10.11 c++ cgi-bin 2.mysql 重置 root 密码,创建 或删除 mysql 子库和子用户 3. ubuntu 搭建 c++ cgi-bin 4.自动生成 wwwconf 子站点 5. 建议选择 ubuntu20.04 版本
325 0
|
SQL JavaScript 前端开发
6 月 TIOBE 榜单:C++ 即将超越 Java 进入 Top3,PHP 热度再下滑
6 月 TIOBE 榜单:C++ 即将超越 Java 进入 Top3,PHP 热度再下滑
159 0
6 月 TIOBE 榜单:C++ 即将超越 Java 进入 Top3,PHP 热度再下滑
|
Java PHP C++
【PHP】PHP基础知识与C++、Java等C家族的重点区别
【PHP】PHP基础知识与C++、Java等C家族的重点区别
126 0
|
Java PHP C++
搞笑:Java & PHP & C++ 之间的战斗!
image Java 拥有十八般武艺,PHP一招致命!PHP 果然是世界上最好的编程语言~ image image Java 连老将 C++ 也干不过,直接一招 KO,我也是醉了。
1194 0
|
Java Go PHP
2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)
2017年的golang、python、php、c++、c、java、Nodejs性能对比       续集更新   本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不得不用神奇的斐波那契算法。
1481 0
|
Web App开发 测试技术 PHP
C++ 与 php 的交互 之----- C++ 获取 网页文字内容,获取 php 的 echo 值。
转载请声明出处! http://www.cnblogs.com/linguanh/category/633252.html       距离上次 谈 C++ 制作json 或者其他数据传送给 服务器,时隔两个多月。
1272 0
|
Web App开发 PHP C++
C++ 与 php 的交互 之----- C++ 异步获取 网页文字内容,异步获取 php 的 echo 值。
已搬迁至 http://www.cnblogs.com/linguanh/p/4543836.html如果您认为这篇文章还不错或者有所收获,您可以通过扫描一下下面的支付宝二维码 打赏我一杯咖啡【物质支持】,也可以点击右下角的【推荐】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力、 ...
844 0