关于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、提升用户体验、完善细节、提供配套工具、优化性能、增加关键日志、增加监控报警、增加容灾方案。

参考文献

[2]H. Berenson, P. Bernstein, J. Gray, J.Melton, E. O’Neil,and P. O’Neil. A critique of ANSI SQL isolation levels. InProceedings of the SIGMOD International Conference on Management of Data, pages1–10, May 1995.

[3]Michael J. Cahill, Uwe Röhm, and Alan D.Fekete. 2008. Serializable isolation for snapshot databases. In SIGMOD ’08:Proceedings of the 2008 ACM SIGMOD international conference on Management of data, pages 729–738, New York, NY, USA. ACM.

[4]Michael James Cahill. 2009. Serializable Isolation for Snapshot Databases. Sydney Digital Theses. University of Sydney, School of Information Technologies

[5] A. Fekete, D. Liarokapis, E. O’Neil, P.O’Neil, andD. Shasha. Making snapshot isolation serializable. www.codexueyuan.com In ACM transactions on database systems, volume 39(2), pages 492–528, June 2005.

相关文章
|
5月前
|
前端开发 网络协议 测试技术
探索PHP的异步编程模型:从React到Swoole
在Web开发领域,PHP一直以简单易用著称。然而,随着互联网应用对性能和并发处理能力的不断追求,传统的同步阻塞式编程模型已逐渐暴露出局限性。本文将深入探讨PHP中的异步编程模型,从早期的React到现代的Swoole,分析其原理、优势及应用场景,并通过实例展示如何利用这些工具提升PHP应用的性能和响应速度。文章旨在为PHP开发者提供一种全新的视角,帮助他们在构建高性能Web应用时做出更合理的技术选择。
64 0
|
2月前
|
缓存 程序员 PHP
为什么说 Swoole 是 PHP 程序员技术水平的分水岭?
【9月更文挑战第8天】Swoole 被视为 PHP 程序员技术水平的分水岭,因为它要求程序员深入理解底层原理(如网络编程、异步和并发模型),具备性能优化能力(如高效服务器开发、数据库连接池管理),拥有架构设计能力(如微服务架构、项目复杂度管理),并具备持续学习和自我提升意识。熟练掌握 Swoole 的程序员在技术能力和综合素质方面更具优势。
|
2月前
|
缓存 网络协议 程序员
为什么说 Swoole 是 PHP 程序员技术水平的分水岭?
【9月更文挑战第7天】Swoole 因其异步非阻塞编程模式、高性能服务器开发能力、性能优化工具及拓展技术视野等特点,被视为 PHP 程序员技术水平的分水岭。它要求程序员掌握异步编程、协程、网络协议等知识,并具备性能优化和系统管理能力,从而全面提升技术水平。
|
3月前
|
JavaScript 应用服务中间件 Go
PHP的异步编程:探索Swoole的奥秘
在传统的同步编程模型中,PHP的表现一直受到诟病。然而,随着Swoole的出现,PHP开发者得以迈入异步编程的新纪元。本文将深入浅出地介绍Swoole如何让PHP在性能和并发处理上实现飞跃,同时保持代码的简洁与优雅。
|
6月前
|
网络协议 中间件 API
探索PHP的异步编程:Swoole框架的应用
在Web开发领域,PHP以其易用性和广泛的社区支持而闻名。然而,传统的PHP编程模型通常是同步的,这意味着在处理请求时,服务器必须等待任务完成才能响应。随着技术的发展,异步编程逐渐成为提升应用性能的关键。本文将深入探讨如何通过Swoole框架实现PHP的异步编程,从而优化并发处理能力,并提高应用的响应速度和扩展性。
|
6月前
|
Apache PHP
百度搜索:蓝易云【Apache环境php安装扩展swoole。】
通过以上步骤,你就可以在Apache环境中成功安装和配置Swoole扩展了。请确保你按照正确的步骤进行操作,并根据你的系统和环境进行相应的调整。如果遇到问题,你可以参考Swoole官方文档或社区的支持资源来获取更多帮助。
53 1
|
安全 Oracle Java
浅谈Java、PHP、C++编程的优缺点
Java 、PHP、C++ 编程语言都是非常流行的编程语言,在开发、Web 开发、移动应用开发等领域都有广泛的应用。
288 0
|
数据采集 网络协议 PHP
如何使用PHP的swoole扩展提高服务器并发能力
PHP的swoole扩展是一个高性能的网络通信框架,它可以让PHP开发者轻松地创建TCP/HTTP服务,来响应客户端的请求。但是,有些请求可能涉及到一些复杂和耗时的业务逻辑,如果在工作进程中直接处理,可能会影响服务器的并发能力。
206 0
如何使用PHP的swoole扩展提高服务器并发能力
|
PHP
PHP swoole 监听端口进程
PHP swoole 监听端口进程
101 0