SwooleSwoole是一个实现各种协议,实现异步高性能的库,不是框架。包括上层的编程API和底层的hack,协程只是实现异步的一种方式。基于Swoole,PHP开发者可以方便快捷的开发支持高并发的应用,比如即时通讯应用,甚至游戏服务器,进一步拓宽了PHP的应用场景。越来越多的PHP项目享受到了Swoole带来的技术红利。基于异步协程库Swoole的PHP框架越来越多。【手把手教你入门Swoole饿死】目前基于Swoole的框架有哪些:Hyperf:PHP企业级微服务协程框架(官方团队合作,但文档不够清晰,语法偏向Laravel)EasySwoole:老式框架(好久没更新了,语法乱)Swoft:老框架(停止维护)MixPHP:老框架(停止维护)SW-X:PHP企业级微服务协程框架(私人团队维护,大量独立组件支持,语法偏向ThinkPHP5)swoole+php和goCSP模型对比:swoole和go只差一个select,go也有多线程协程runtime.GOMAXPROCS,当然单线程也有单线程的好处,少了很多线程安全问题的考虑。抽象能力:php5之后更接近java,面向对象能力更好,设计模式应用更好,业务实现更好用php,中间件更好用go。错误处理:php的try/catch/finally虽然内置的不够多,比较传统,但是可以省去很多处理异常的代码。异常不会导致服务停止。Go的错误处理粒度更细,在处理每个错误时需要更加小心。一个异常错误,不然一不小心服务就挂了,php真的很适合快速变现业务。组件库生态:PHP现有的库分为c扩展和composer包,其中一些使用了composer包中的一些全局变量/方法,导致无法在协程中使用,而且很多老的c扩展没有考虑异步场景,很多细粒度的功能无法实现,使用单独的网络库也不能hook成协程,而所有的go库自然可以使用协程,而且都是Go自己写的,不用c。调试和修改源代码也很容易。很显然,java和go在生态上是非常有优势的。类型系统:强类型和弱类型各有优势。强类型必须有很高的执行效率,而弱类型则更自由灵活。性能:swoole主要提供websocket/longlink服务,协程异步实现,协程异步主要是异步IO,解决了以往php只有同步IO带来的低效率,但是对于密集型计算,swoole无法解决cpu这是一个效率问题。Swoole通过协程将原来php磁盘IO和网络IO的同步阻塞方式升级为异步非阻塞方式,提高CPU利用率,加快请求处理速度。我们需要一个基于swoole的框架吗?或者能不能给第三方框架添加swoole扩展,比如laravel或者thinkphp的swoole扩展?如果项目不大,用户量也不大,那么就不会遇到性能瓶颈。你仍然可以使用你熟悉的传统MVC框架,效率高,容错性好,维护方便。如果项目大,用户量大,并发量大,公司只有php技术栈,那么首先考虑前端优化(代码逻辑优化,加载优化,资源优化等),负载均衡、后端优化(业务逻辑或算法优化、限流Streams、异步队列等)、数据层优化(合适的缓存机制、数据库读写分离、sql语句优化、数据库索引优化等)。)等。为了进一步优化,可能还会考虑更完善的分布式,数据库主从和集群,缓存主从和集群,消息队列集群,再考虑服务分离,逐步发展成微服务架构。一方面提升了性能,提高了开发、测试和部署的效率。对于微服务中常用的RPC和API(RESTful)技术,如果需要新的性能,显然客户端(后端业务客户端)需要支持异步实现,RPC服务端也需要支持异步,以保证连接可以快速进行处理并终止。避免系统连接过多,最终导致三高走低。选择哪种Swoole框架如果公司愿意提供有偿服务支持,建议选择Hyperf,因为该框架为付费用户提供技术支持和技术培训支持。如果你无法提供支付,有PHP-FPM做面对面的性能优化需求,建议选择SW-X。本框架支持纯框架实现的RPC服务,无任何第三方依赖的服务中心管理非常方便。同时,除了Mysql、Redis、MonggoDB、RBMQ、Crontab、验证器、中间件、限流器等常用组件外,框架还提供了大量免费的组件库,包括:身份证分析、纬度和经度查询城镇等大数据查询组件非常值得企业级开发使用。
