`
hongtoushizi
  • 浏览: 372605 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Node.js的颠覆者:PHP的Swoole扩展 (转载)

php 
阅读更多

最近2年Node.js很火,异步与协程是网络开发方面热门的话题。在追求新技术的同时,也应该反思下这里面存在的陷阱。Node.js确实是一门有趣好玩有个性的语言和技术,动态性,全异步回调的方式,闭包等等特性。值得所有程序员尝试一下。

 

但本文将介绍的是一门另外的容易被大家轻视的编程语言:PHP。长期以来PHP都是作为一门为Web开发而生的前端脚本语言。PHP极其的简单,你可以在一周只能掌握它,一月内开发出一个功能丰富的网站。发展至今PHP其实已经完全不再是一门简单的语言了,PHP的功能保罗万象,常用的操作系统功能,如进程管理,信号,网络通信,多线程,ptrace、inotify、加密解密、压缩都有相应的扩展实现,而且PHP可以很好的与C/C++互相调用。PHP提供了ZendAPI,可以很方便地使用C来扩充PHP的功能。语言特性方面PHP5.4提供的namespace,phar打包,composer依赖管理,Trait,完整的面向对象编程语法,强大的魔术方法和常量,字符串与函数类对象直接转换,闭包和匿名函数等丰富的语言特性。在后端开发方面强大到堪比Java,C#,但开发效率更高。

 

PHP对比Node.js的优势

1、PHP开发效率更高

PHP比Node.js更简单直接,这一点有点像C了。使用PHP开发一个功能,几乎是所有语言中效率最高的,没有之一。

2、PHP程序员更多

PHP因为比较容易入门的原因,程序员数量远超其他语言。其他语言程序员也有很大一部分会PHP。

 

3、PHP开源项目多

PHP有大量开源的项目,有各种第三方库

 

Node.js最大的特色之一是内置了异步高性能的Socket Server/Client实现,在此基础上提供了内置的Web服务器。PHP里也有类似的神器,那就是Swoole扩展。使用Swoole扩展完全可以开发出一个高性能安全稳定的服务器程序来。丝毫不逊于Node.js,而且在某些方面比Node.js更强大。

 

Swoole使用C语言编写,以PHP扩展的方式来运行。Swoole的网络IO部分基于epoll/kqueue事件循环,是全异步非阻塞的。业务逻辑部分使用多进程同步阻塞方式来运行。这样既保证了Server能够应对高并发和大量TCP连接。又保证业务代码仍然可以简单的编写。

 

Swoole对比Node.js的优势

1、swoole是原生支持多进程/多线程的

开发者只需要修改一个参数,配置下要启动多少个进程即可。而Node.js的网络库本身并没有提供多进程/多线程的实现。开发者需要自行创建进程。或者干脆使用单线程。这样无法充分利用多核。

 

2、swoole使用消息传递+多Worker进程,而不是多线程+共享内存+加锁

,共享内存的性能虽然很好,但存在安全问题,需要读写时加锁。锁的粒度过大会导致只有一个线程在运行。锁太复杂又会有死锁问题。所以开发者需要非常谨慎小心。

传统的

 

3、swoole的代码编写是同步,而不是嵌套异步回调

Node.js的代码如果太复杂,会嵌套多层回调,使代码丧失可读性,程序流程变得很乱。Swoole使用了传统Linux下半同步半异步多Worker的实现方式。业务代码按照同步方式编写,更简单。

Swoole也内置了Socket客户端的实现,但采用的是同步+并行方式来执行。PHP本身也提供了socket的功能,但某几个函数存在一些bug,而且比较复杂。Swoole内置的客户端类更加安全和简化。

 

4、swoole内置了Node.js所没有的额外特性

如CPU Affinity设置,守护进程化,混合UDP/TCP多端口监听,多定时器等。

 

有无成功的案例?

国内某大公司知名SNS网站,全球排名200。内部已经使用此方式来开发了。有600多台PHP语言开发的WebServer,200多台PHP开发的SOA服务器。300多台异步事务服务器。

 

Swoole项目地址:

https://github.com/matyhtf/swoole

分享到:
评论

相关推荐

    php swoole 5.0.0扩展包

    php swoole 5.0.0扩展包 php swoole 5.0.0扩展包 php swoole 5.0.0扩展包 php swoole 5.0.0扩展包 php swoole 5.0.0扩展包 php swoole 5.0.0扩展包 php swoole 5.0.0扩展包 php swoole 5.0.0扩展包 php swoole 5.0.0...

    php7及以上版本 swoole扩展

    Swoole是一个高性能的PHP扩展,专为网络并发设计,提供了异步多线程服务器、异步TCP/UDP网络客户端、HTTP服务器、WebSocket服务器、MySQL协议服务器等功能。它极大地提升了PHP处理高并发、长连接场景下的性能,使得...

    PHP扩展swoole,PHP7及以上版本可用

    **PHP扩展swoole详解** PHP扩展Swoole是一款高性能的异步并行处理扩展,专为PHP设计,使得PHP可以编写出服务器级别的应用程序。它提供了多种强大的特性,包括TCP/UDP网络通信、HTTP服务器、WebSocket服务器、进程...

    Swoole项目实践.pdf

    Swoole是一款基于PHP的高性能Web服务器和异步编程框架,旨在提高Web应用程序的性能和可扩展性。Swoole项目实践.pdf文件详细介绍了Swoole项目的实践经验,涵盖了项目的设计、实现和优化等多方面内容。 Swoole项目...

    swoole_loader扩展PHP.zip

    2. "swoole_loader72.so":这是Swoole Loader的动态链接库文件,通常用于Linux系统中的PHP扩展。".so"后缀表示这是一个共享对象文件,即PHP扩展的二进制形式。在PHP中,使用`extension=swoole_loader72.so`这样的...

    Swoole Loader扩展文件php70-73 php-swoole-loader-php73-nzts-x64.dll

    php_swoole_loader_php56_nzts_x64.dll php_swoole_loader_php70_nzts_x64.dll php_swoole_loader_php71_nzts_x64.dll php_swoole_loader_php72_nzts_x64.dll php_swoole_loader_php73_nzts_x64.dll

    Swoole Loader Linux64位(非线程安全) 、Windows64位(非线程安全)扩展

    php_swoole_loader_php56_nzts_x64.dll、php_swoole_loader_php70_nzts_x64.dll、php_swoole_loader_php71_nzts_x64.dll、php_swoole_loader_php72_nzts_x64.dll、php_swoole_loader_php73_nzts_x64.dll Windows64...

    PHP环境安装swoole-loader扩展

    Swoole是一个开源的PHP扩展,它为PHP提供了原生的异步多线程服务器,使得PHP可以进行高性能的网络编程。 首先,Swoole支持多种操作系统,包括Windows和Linux。这意味着无论你的开发环境是哪个平台,都有相应的版本...

    php7.0以上swoole扩展

    Swoole是一个高性能的、基于C语言开发的PHP扩展,专为PHP提供了异步并行编程的能力。标题指出“php7.0以上swoole扩展”,这意味着Swoole扩展自PHP 7.0版本起就被广泛支持,这在很大程度上提升了PHP处理网络并发和I/O...

    php7.0 swoole扩展

    Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新...

    swoole 4.8.11 swoole.so

    编译好的 swoole 4.8.11版本的 swoole.so

    swoole学习文档

    Swoole是一款高性能、异步、并行的PHP扩展,专为PHP开发Web服务器和网络应用而设计。它使得PHP开发者能够构建出基于事件驱动、非阻塞I/O的高并发服务,极大地提升了PHP在服务器端的能力。这篇文档将深入探讨Swoole的...

    SwooleEngine利用Swoole扩展运行PHP应用程序

    Swoole Engine是一款高度优化的PHP扩展,专为构建高性能、异步、非阻塞的网络应用程序而设计。它使得PHP开发者能够利用底层系统资源,实现低延迟、高并发的服务器端应用。Swoole Engine的引入,极大地提升了PHP在...

    php_swoole_loader_2.2_php7.3_zts widows-x64版本

    Swoole是一个高性能的PHP扩展,它提供了异步并行编程的能力,能够极大地提升Web应用的性能,尤其是在处理I/O密集型任务如网络通信时。 首先,让我们深入了解Swoole扩展。Swoole是一个开源的C语言编写、为PHP设计的...

    swoole-loader 7.1-7.4

    Swoole Loader是一款针对PHP的扩展,用于加速和优化PHP应用程序的执行效率,特别是对于基于Swoole框架的项目。Swoole Loader的核心功能在于它实现了对PHP代码的AOT(Ahead Of Time)编译,将PHP源代码预先转换为机器...

    PHP swoole loader 扩展 for linux win系统、线程安全\非安全、PHP54-81 全集

    Swoole Loader是PHP扩展Swoole的一部分,它提供了一个高效的自动加载机制,用于加载PHP应用程序中的类和接口,从而优化代码执行效率。Swoole扩展本身是一个强大的异步并发框架,尤其适用于构建高性能的网络应用,如...

    pcre2.h fatal error: pcre2.h: No such file or directory 27 | #include "pcre2.h"

    fatal error: pcre2.h: No such file or directory 27 | #include "pcre2.h" 安装swoole遇到错误,把pcre2.h 放到、usr/include下

    Swoole Loader扩展.7z

    Swoole Loader扩展是PHP开发中的一个重要工具,它专门针对Swoole框架进行了优化,能够提升PHP在处理高并发、长连接以及实时性任务时的性能。Swoole是一款开源的PHP异步并行框架,它使PHP开发者能够构建高性能的网络...

    Swoole Loader扩展.zip

    Swoole Loader扩展(ripro主题配置)(最高到PHP7.3)(解压密码:123456) php_swoole_loader_php73_nzts_x64.dll swoole_loader73.so

    swoole-loader.zip

    Swoole本身是一个高性能的PHP扩展,它提供了网络通信、并发处理和事件驱动的能力,使得PHP在处理高并发和实时性应用时效能大幅提升。 Swoole-Loader的出现解决了在Swoole环境中传统PHP类库加载机制的问题。在传统的...

Global site tag (gtag.js) - Google Analytics