首页
技术笔记
网址导航
Json在线解析
二维码
Ip地址查询
在线流程图
新用户注册
|
会员登录
在线工具
开发笔记
毒鸡汤
网址导航
免费在线流程图
18赞
604
当前位置:
开发笔记
>
编程语言
> 正文
Swoole到底是个什么东西?
作者:云聪京初瑞子_617 | 2021-09-01 18:57
一定要匿名!Swoole,据说是一个异步处理很牛逼的东西!但是他到底是什么?PHP扩展?为什么有人经常用他和node.js之类的做对比!他和PHP是什么关系!请非常直白的说下!哦对了!爱php~
一定要匿名!Swoole,据说是一个异步处理很牛逼的东西!但是他到底是什么?PHP扩展?为什么有人经常用他和node.js之类的做对比!
他和PHP是什么关系!请非常直白的说下!哦对了!爱php~
回复内容:
这个要回答下,楼上在说PHP的swoole框架,被黑的有点惨。实际上swoole扩展和PHP的框架并没有关系。
一直以来在其他编程语言程序员心目中PHP就是个套HTML页面的。所谓PHP程序员就是搞WordPress、discuz二次开发,一个月拿三五千的loser,和我大Java工程师相比简直low爆了。
但大家黑了PHP半天,才发现PHP最近这几年反而越来越流行了,PHPer们的工资可一点都不低。就拿我司来说吧,之前面过一个PHP程序员工作三年多,水平一般吧,后来公司开价2万/m收了。水平好一点的平均都在3-4万/m。
实际上作为一名PHP程序员,我很清楚PHP的确有很多局限性,比如Unix系统编程、网络通信编程、异步io,大部分PHPer不懂。PHP界也确实没有这样的东西。Swoole开源项目就是为了弥补PHP在这些方面的缺陷诞生的。与WordPress这些产品不同,swoole实际上是一个网络通信和异步io的引擎,一个基础库。PHPer可以基于swoole去实现过去PHP无法实现的功能。swoole为PHPer打开了通往另一个世界的大门。 php现有的应用方式都是基于http的,对于需要快速实时响应的情况比较乏力,比如网络游戏或者推送服务一般都需要与用户长期保持一个tcp连接以便实时响应和推送信息。
swoole就是解决这样应用场景的。
这个是让php自身建立一个服务,不需要nginx之类的代理,直接监听端口实现通信。
一种应用方式也可以代替掉nginx做http服务,但一般不会这么用。 php与外部通信需要借助系统的socket。
通常使用的Apache nginx就是封装了的socket,可以实现并发处理。客户端发送请求到nginx/apache,再转发到fastcgi端口交给php处理
swoole把系统的socket集成到php底层,php可以直接通过swoole与客户端交互。
也就是说swoole是个封装了底层socket的网络库。 Swoole之于PHP正如Node.js之于JavaScript. 就是一个底层通信框架,基于socket通信的,其实PHP 也能做多进程编程(扩展支持,workerman是这方面NO.1),swoole使用C 实现的一套PHP扩展,基于它也是做这方面的功能,因为这两个底层框架的存在,大大扩展了PHP的应用范围,和不错的未来期望 @韩天峰
推荐阅读
程序员
根据输入框的内容过滤UL列表中的数据-AngularJs
如何解决《根据输入框的内容过滤UL列表中的数据-AngularJs》经验,为你挑选了1个好方法。 ...
[详细]
程序员
如何在codeigniter中显示数据库表名列表
如何解决《如何在codeigniter中显示数据库表名列表》经验,为你挑选了1个好方法。 ...
[详细]
程序员
无法安装sqlite3 gem
如何解决《无法安装sqlite3gem》经验,为你挑选了1个好方法。 ...
[详细]
程序员
为什么(sizeof(int)> -1)为false?
如何解决《为什么(sizeof(int)>-1)为false?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
将光标隐藏在UITextView - Swift上
如何解决《将光标隐藏在UITextView-Swift上》经验,为你挑选了1个好方法。 ...
[详细]
程序员
仅当存在DROP触发器时(ORACLE)
如何解决《仅当存在DROP触发器时(ORACLE)》经验,为你挑选了1个好方法。 ...
[详细]
程序员
打印执行的命令
如何解决《打印执行的命令》经验,为你挑选了0个好方法。 ...
[详细]
程序员
Azure - 我为什么不能在我的虚拟机上找到连接的驱动器?
如何解决《Azure-我为什么不能在我的虚拟机上找到连接的驱动器?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
什么是IOS开发中的Segue?
如何解决《什么是IOS开发中的Segue?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
使用SimplePreAuthenticator和PreAuthenticatedToken时处理短暂令牌的最佳方法
如何解决《使用SimplePreAuthenticator和PreAuthenticatedToken时处理短暂令牌的最佳方法》经验,为你挑选了0个好方法。 ...
[详细]
程序员
如何找到以下新的快速排序算法的精确时间复杂度和空间复杂度
如何解决《如何找到以下新的快速排序算法的精确时间复杂度和空间复杂度》经验,为你挑选了1个好方法。 ...
[详细]
程序员
使用@category spring和gradle运行jUnit测试
如何解决《使用@categoryspring和gradle运行jUnit测试》经验,为你挑选了0个好方法。 ...
[详细]
程序员
从Django中的视图返回HTML元素
如何解决《从Django中的视图返回HTML元素》经验,为你挑选了1个好方法。 ...
[详细]
程序员
其中+和模型的位置
如何解决《其中+和模型的位置》经验,为你挑选了1个好方法。 ...
[详细]
程序员
Docker:打开/certs/domain.crt:权限被拒绝
如何解决《Docker:打开/certs/domain.crt:权限被拒绝》经验,为你挑选了1个好方法。 ...
[详细]
程序员
MySQL和MariaDB数据库有什么区别?
如何解决《MySQL和MariaDB数据库有什么区别?》经验,为你挑选了0个好方法。 ...
[详细]
程序员
如何从MaskedTextBox获取原始文本?
如何解决《如何从MaskedTextBox获取原始文本?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
params索引器的实际用法
如何解决《params索引器的实际用法》经验,为你挑选了0个好方法。 ...
[详细]
程序员
具有单个子模块的多个回购
如何解决《具有单个子模块的多个回购》经验,为你挑选了1个好方法。 ...
[详细]
程序员
从IList <IDictionary <string,object >>获取密钥
如何解决《从IList<IDictionary<string,object>>获取密钥》经验,为你挑选了1个好方法。 ...
[详细]
吐了个 "CAO" !
吐个槽吧,看都看了
会员登录
|
用户注册
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
关注作者
Tags | 热门标签
actionscrip
bash
c#
c++
c语言
erlang
flutter
go
golang
java
javascript
lua
node.js
perl
php
python
scala
typescript
RankList | 热门文章
1
TensorFlow中的双线性张量积
2
在大表上使用OFFSET优化查询
3
获取嵌套字典中唯一值的列表(或集)
4
在循环内部应用鼠标悬停事件侦听器
5
如何在Android Studio中的ActionBar上添加后退按钮?
6
在alertDialog中,简单的微调器项看起来很小
7
可选参数目标C.
8
内联函数具有非内联副本
9
指定要从Rails查询结果中排除的字段
10
将数字转换为数十,数百,数千
11
如何找回较旧的Whatsapp个人资料图片?
12
在Firebase android中编写数组
13
在Neo4j中存储UUID的最佳方式?
14
IE 11上的beforeunload - 不提示用户不起作用
15
使用C#将.doc转换为.docx
16
如何切换位置或交换两个JComboBox的内容?
17
C++:检查模板类型是否是可变参数模板类型之一
18
为什么程序返回的是除我指定的退出代码?
19
Renderscript的Android Studio 2.0 Preview 2问题
20
node_modules有很多我不知道的文件
DevBox开发工具箱 | 专业的在线开发工具网站
京公网安备 11010802040832号
|
京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有