首页
技术笔记
网址导航
Json在线解析
二维码
Ip地址查询
在线流程图
新用户注册
|
会员登录
在线工具
开发笔记
毒鸡汤
网址导航
免费在线流程图
17赞
278
当前位置:
开发笔记
>
编程语言
> 正文
Swoole到底是个什么东西?
作者:小妖694_807 | 2021-09-08 09:31
一定要匿名!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的应用范围,和不错的未来期望 @韩天峰
推荐阅读
程序员
C#等效的PHP http_build_query
如何解决《C#等效的PHPhttp_build_query》经验,为你挑选了1个好方法。 ...
[详细]
程序员
MVC DropDownList OnChange更新其他表单字段
如何解决《MVCDropDownListOnChange更新其他表单字段》经验,为你挑选了1个好方法。 ...
[详细]
程序员
将背景过滤器应用于svg path元素
如何解决《将背景过滤器应用于svgpath元素》经验,为你挑选了1个好方法。 ...
[详细]
程序员
ggplot2:更改条形图中每个构面的颜色
如何解决《ggplot2:更改条形图中每个构面的颜色》经验,为你挑选了1个好方法。 ...
[详细]
程序员
Golang:如何在Linux上使用syscall.Syscall?
如何解决《Golang:如何在Linux上使用syscall.Syscall?》经验,为你挑选了0个好方法。 ...
[详细]
程序员
如何从django rest框架的基于函数的视图中分页响应?
如何解决《如何从djangorest框架的基于函数的视图中分页响应?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
解析JSON响应的最简单方法
如何解决《解析JSON响应的最简单方法》经验,为你挑选了3个好方法。 ...
[详细]
程序员
Google Feeds API无法正常工作-是否已关闭?
如何解决《GoogleFeedsAPI无法正常工作-是否已关闭?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
MATLAB - 获取当前工作空间
如何解决《MATLAB-获取当前工作空间》经验,为你挑选了1个好方法。 ...
[详细]
程序员
为什么减法超过30天导致错误答案
如何解决《为什么减法超过30天导致错误答案》经验,为你挑选了1个好方法。 ...
[详细]
程序员
Chrome DevTools - "排队"在"计时"选项卡中的含义是什么?
如何解决《ChromeDevTools-"排队"在"计时"选项卡中的含义是什么?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
使用角度2添加firebase的单元测试
如何解决《使用角度2添加firebase的单元测试》经验,为你挑选了0个好方法。 ...
[详细]
程序员
从数组中获取最"流行"的数字
如何解决《从数组中获取最"流行"的数字》经验,为你挑选了1个好方法。 ...
[详细]
程序员
在UICollectionViewCell中处理滚动视图大小
如何解决《在UICollectionViewCell中处理滚动视图大小》经验,为你挑选了0个好方法。 ...
[详细]
程序员
术语弹性搜索中嵌套字段的聚合
如何解决《术语弹性搜索中嵌套字段的聚合》经验,为你挑选了1个好方法。 ...
[详细]
程序员
Linux IRQ处理程序中的固有竞争条件
如何解决《LinuxIRQ处理程序中的固有竞争条件》经验,为你挑选了1个好方法。 ...
[详细]
程序员
BlueZ D-Bus C或C++示例
如何解决《BlueZD-BusC或C++示例》经验,为你挑选了1个好方法。 ...
[详细]
程序员
C++ - 递归结构 - 它可能吗?
如何解决《C++-递归结构-它可能吗?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
AngularJS捕获$ http操作的所有状态代码?
如何解决《AngularJS捕获$http操作的所有状态代码?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
将字符串转换为size_t
如何解决《将字符串转换为size_t》经验,为你挑选了4个好方法。 ...
[详细]
吐了个 "CAO" !
吐个槽吧,看都看了
会员登录
|
用户注册
小妖694_807
这个屌丝很懒,什么也没留下!
关注作者
Tags | 热门标签
actionscrip
bash
c#
c++
c语言
erlang
flutter
go
golang
java
javascript
lua
node.js
perl
php
python
scala
typescript
RankList | 热门文章
1
SpringMVC - Method可以返回Redirect(String)或ModelAndView
2
我可以将通用参数约束为*not*是可选的吗?
3
std :: string类成员应该是指针吗?
4
将指针存储到Eigen Vector'segment'而不复制?
5
如何在Redux中将全局状态数据处理为深层嵌套组件?
6
内部MSBuild错误:已经注册了构建时间
7
在AsciiDoc中使用图像作为链接
8
Javascript数组函数有我无法看到的错误
9
如何将对象注入WCF的IErrorHandler?
10
Android Studio未与adb GLIBC通信....未找到错误
11
具有圆角的Android自定义WebView
12
何时使用SQLAlchemy .get()vs .filter(Foo.ID == primary_key_id).first()
13
对于特定用户MySQL,在同一个表中查找日期范围重叠
14
WatchKit应用程序提交失败; MinimumOSVersion
15
忽略jshint不必要的分号错误
16
在Laravel中对孩子进行排序:我如何按名字对孩子进行排序?
17
在perl中指定单个空格分隔符
18
更改Select2的默认字体
19
如何使用Symfony 3目录结构使用Codeception
20
RSpec:#RSpec :: Core :: ExampleGroup :: Nested的未定义方法`allow'
DevBox开发工具箱 | 专业的在线开发工具网站
京公网安备 11010802040832号
|
京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有