swoolefy PHP的异步、并行、高性能网络通信引擎内置了Http/WebSocket服务器端/客户端

近半年来努力付出,项目终于要正式结项了,团队4人经历了很多困难,加班加点,最终完成了!
剩下的时间将总结一下在该项目中用到知识和遇到问题。今天就从swoole说起!
项目中实现异步大文件传输的功能,在服务端使用了swoole,可以高效方便的实现,很多的项目其实也在用到swoole,突然间觉得swoole已经非常强大,对于phper来说,这是非常好的,可能大家都觉高大上了。

接下来将会以swoole为系列,总结一些swoole的知识,当然,官网文档有的这里就不会再多说,将会从应用场景,应用的技巧,和如何在一些框架中整合,比如thinkph或者yii2这两个框架。

本人已开源基于swoole扩展实现的高性能轻量级框架,有着完善的开发文档和用户案例

swoolefy:https://github.com/bingcool/swoolefy

开发文档:https://www.kancloud.cn/bingcoolhuang/php-swoole-swoolefy/587501

那么,学习任何一门知识,首先要做的就是要了解这门知识,它是什么,它能做什么?所以官网还是我们第一个要去浏览的。
swoole官网:

http://www.swoole.com/

官网的原话介绍:

PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

除了异步IO的支持之外,Swoole为PHP多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大简化多进程并发编程的工作。其中包括了并发原子计数器,并发HashTable,Channel,Lock,进程间通信IPC等丰富的功能特性。

swoole2.0支持了类似Go语言的协程,可以使用完全同步的代码实现异步程序。PHP代码无需额外增加任何关键词,底层自动进行协程调度,实现异步。

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

从这简单的一段介绍中,我们已经知道了swoole是一个用写的php扩展,实现了网络层的很多功能。

再看看它的应用案例:
swoole目前已被多家移动互联网、物联网、网络游戏、手机游戏企业使用,替代了C++、Java等复杂编程语言来实现网络服务器程序。 使用PHP+Swoole,开发效率可以大大提升。
官方提供了基于swoole扩展开发的PHP网络框架, 支持Http,FastCGI,WebSocket,FTP,SMTP,RPC等网络协议 
swoole在美国,英国,法国,印度等国家都有用户分布,在国内的 腾讯、 百度、阿里巴巴、YY语音等多家知名互联网公司均有使用。

从中可以看出swoole可以应用在很多方面,特别是在移动互联网方面,而且国内的BAT三巨头都在使用,足以说明swoole是已经非常成熟的,而且是经过实际业务考验的!

swoole是由中国人韩天峰老师及其团队开发、维护以及开源的,感觉他们很伟大,向他们表示致敬!

swoole的版本更新也非常快,目前最新的稳定版本是1.9.3,当然还有最新加入协程功能的2.0版本

所以建议使用swoole-1.9.3-stable版本

特别注意:1.8.7或更高版本已完全兼容PHP7

本人基于swoole扩展实现的一个高性能MVC的微服务框架目前已开源:

https://github.com/bingcool/swoolefy
---------------------
作者:bingcool空间
来源:CSDN
原文:https://blog.csdn.net/u012979009/article/details/54602935
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/wanglijun/p/10896990.html

时间: 2024-11-07 04:09:05

swoolefy PHP的异步、并行、高性能网络通信引擎内置了Http/WebSocket服务器端/客户端的相关文章

使用php重新实现PHP脚本引擎内置函数

// 实在无聊,突发奇想,想把PHP里面部分已经提供封装好的函数重新使用PHP实现一遍, // 于是便有了下面的代码主要实现了PHP中部分字符串处理函数,同时实现了一些PHP中 // 没有,但是同样有作用的字符串处理函数同样的这些函数,也能够使用其他语言来实 // 现,比如用C/VBScript/Perl等等,那么你就能够有一个自己的函数库. // 以下函数不一定能够成功运行,只是为了学习而已. // // 如果无特别声明,全部是由于heiyeluren原创,要使用任何函数都请保留作者信息 /*

51cto C++百万并发网络通信引擎架构与实现视频课程

课程目标  掌握用C++开发具有百万级处理能力的服务端.客户端通信技术. 企业实际经验的分享.填坑.握主流平台下使用C++TCP进行网络通信.掌握select.IOCP.epoll网络通信. 掌握主流游戏引擎中使用C++TCP与服务端通信.掌握多平台C++程序的编码/调试/发布.掌握服务器开发性能优化技巧 适用人群 学生以及想要开发金融.游戏.视频.电商.社交等要求稳定.高性能.高频处理.高并发系统网络程序的工程师 课程简介 本课程由刘远东.张立铜两位工程师将两人在企业多年积累的开发经验结合而成

百度DMLC分布式深度机器学习开源项目(简称“深盟”)上线了如xgboost(速度快效果好的Boosting模型)、CXXNET(极致的C++深度学习库)、Minerva(高效灵活的并行深度学习引擎)以及Parameter Server(一小时训练600T数据)等产品,在语音识别、OCR识别、人脸识别以及计算效率提升上发布了多个成熟产品。

百度为何开源深度机器学习平台? 有一系列领先优势的百度却选择开源其深度机器学习平台,为何交底自己的核心技术?深思之下,却是在面对业界无奈时的远见之举. 5月20日,百度在github上开源了其深度机器学习平台.此番发布的深度机器学习开源平台属于"深盟"的开源组织,其核心开发者来自百度深度学习研究院(IDL),微软亚洲研究院.华盛顿大学.纽约大学.香港科技大学,卡耐基·梅陇大学等知名公司和高校. 通过这一开源平台,世界各地的开发者们可以免费获得更优质和更容易使用的分布式机器学习算法源码,

内置自研容器引擎Newbon,精灵云EcOS更新至2.1版

情人节那天,我们正式对外展现了精灵云自研容器调度引擎Newbon的真实面目(详情可参见微信).之所以选择情人节那天发布是希望接受过精灵云公有云超50万次容器调度的验证和考验的Newbon可以成为最懂广大Docker使用者的"最佳搭档". 而同样内置了Newbon的Ghostcloud精灵云企业级容器云平台EcOS(Enterprise Container Operation System)也在情人节后第三天正式更新并上线至2.1版.新版本的EcOS做了以下5点重要功能更新: 新增应用S

淘宝分布式 key/value 存储引擎Tair安装部署过程及Java客户端测试一例

目录 1. 简介 2. 安装步骤及问题小记 3. 部署配置 4. Java客户端测试 5. 参考资料 声明 1. 下面的安装部署基于Linux系统环境:centos 6(64位),其它Linux版本可能有所差异. 2. 网上有人说tair安装失败可能是因为gcc版本问题,高版本的gcc可能不支持某些特性导致安装失败,经过实验证明,该说法是错误的,tair安装失败有各种可能的原因但绝对与gcc版本无关,比如我的gcc开始版本为4.4.7,后来tair安装失败,我重新编译低版本的gcc(gcc4.1

基于TCP网络通信的自动升级程序源码分析-客户端请求服务器上的升级信息

每次升级,客户端都会获取服务器端存放在upgradefile文件夹下的需要升级的文件和升级信息配置文件(即upgradeconfig.xml文件) 我们来看一下代码 //升级信息配置文件相对应的类 ( 升级信息配置文件是由这个类转化成的) private UpgradeConfig upgradeConfig = null; //客户端存储升级配置文件的地址 是放在客户端根目录下的 (就是把服务器 upgradefile/upgradeconfig.xml下载到客户端存放的位置) string

MySQL5.5索引数在InnoDB引擎内与索引数在mysql中定义的数量是不一致问题

在查看MySQL错误日志的时候发现这样的错误,如下: 160322 21:42:59 [ERROR] Table baby/baby_order contains 12 indexes inside InnoDB, which is different from the number of indexes 11 defined in the My SQL 大概意思是说表baby_order的索引数在InnoDB引擎内与索引数在mysql中定义的数量是不一致的 为什么会出现这样的错误呢? 参考了这

基于TCP网络通信的自动升级程序源码分析-客户端接收文件

升级程序客户端接收文件 /// <summary> /// 文件数据缓存 索引是 ConnectionInfo对象 数据包的顺序号 值是数据 /// </summary> Dictionary<ConnectionInfo, Dictionary<long, byte[]>> incomingDataCache = new Dictionary<ConnectionInfo, Dictionary<long, byte[]>>();

swoole(PHP异步网络通信引擎)的结构和运行流程

swoole结构说明和运行流程 主要分为三个部分: 1.Master:swoole的主进程 处理swoole核心的事件驱动, 它包含多个线程(蓝色Reactor), 所有事件的监听都在Reactor实现,如 客户端链接,本地通讯管道,异步操作文件都会在这里注册 2.Manager: 管理进程 用于worker和taker的创建和管理 3.worker和task进程: worker进程: swoole主逻辑进程,用于处理客户端的请求 task进程:异步工作进程,主要处理耗时长的同步任务 进程与进程