为什么php自带的socket不怎么听说,基本都是用swoole,workerman去实现?

1、PHP的socket扩展是一套socket api,仅此而已。

swoole,用C实现,它的socket是C 库的socket,更加底层可控。

workerman,如题主所说,使用PHP实现,那它的socket就是用PHP socket扩展啊。只是对其进行工程化开发,成了一个框架。

2、swoole 框架和 swoole 扩展是不一样的。

swoole 框架也可以脱离 swoole 扩展来使用。

swoole 扩展将进程管理,tcp 监听这些工作在 C 里面做了,以扩展的形式提供给 PHP 一些接口来调用。

workerman 就是原生的使用 php stream 相关的函数来监听 tcp,进行进程管理。

如果你想学习 PHP 开发 tcp 的原理建议看 workerman 的源码,如果你只是想使用,用 swoole 就 OK 了。

3、就是一个底层通信框架,基于socket通信的,

其实PHP 也能做多进程编程(扩展支持,workerman是这方面NO.1),swoole使用C 实现的一套PHP扩展,基于它也是做这方面的功能,因为这两个底层框架的存在,大大扩展了PHP的应用范围,和不错的未来期望

4、php现有的应用方式都是基于http的,

对于需要快速实时响应的情况比较乏力,比如网络游戏或者推送服务一般都需要与用户长期保持一个tcp连接以便实时响应和推送信息。

swoole就是解决这样应用场景的。

这个是让php自身建立一个服务,不需要nginx之类的代理,直接监听端口实现通信。

一种应用方式也可以代替掉nginx做http服务,但一般不会这么用。

5、实际上作为一名PHP程序员,我很清楚PHP的确有很多局限性,

比如Unix系统编程、网络通信编程、异步io,大部分PHPer不懂。PHP界也确实没有这样的东西。Swoole开源项目就是为了弥补PHP在这些方面的缺陷诞生的。与WordPress这些产品不同,swoole实际上是一个网络通信和异步io的引擎,一个基础库。PHPer可以基于swoole去实现过去PHP无法实现的功能。swoole为PHPer打开了通往另一个世界的大门。

6、这2个框架都很出名,它们的出现大大的提高了php的应用范围及知名度

workerman和swoole都是php socket 服务器框架,都支持长连接、tcp和udp、websocket、异步、分布式部署等

workerman纯php写的,swoole是php的c扩展,性能肯定更高,百度、腾讯不少产品的server就是基于swoole的

workerman上手更快,文档更丰富,社区活跃,社区基本做到有问必答,一般的中小型项目也够了,所以初学者最好还是使用workerman,熟了后再根据具体业务权衡(官方网站都有压测数据)

对Swoole、Workerman和php自带的socket的理解的更多相关文章

  1. workerman是一个高性能的PHP socket服务器框架

    workerman-chatorkerman是一款纯PHP开发的开源高性能的PHP socket服务器框架.被广泛的用于手机app.手游服务端.网络游戏服务器.聊天室服务器.硬件通讯服务器.智能家居. ...

  2. 带你一分钟理解闭包--js面向对象编程

    上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...

  3. 带你一分钟理解 JavaScript 闭包 自己结合所看文档+源码的一些理解 喜欢就评论个赞哦!!!!--小蛋蛋

    什么是闭包? 先看一段代码: function a(){ var n = 0; function inc() { n++; console.log(n); } inc(); inc(); } a(); ...

  4. 带你一分钟理解 JavaScript 闭包

    什么是闭包? 先看一段代码: function a(){ var n = 0; function inc() { n++; console.log(n); } inc(); inc(); } a(); ...

  5. 带你一分钟理解闭包--js面向对象编程(转载他人)

    什么是闭包? 先看一段代码: function a(){ var n = 0; function inc() { n++; console.log(n); } inc(); inc(); } a(); ...

  6. Python中带参装饰器理解

  7. 转·带你用实例理解C语言回调函数

    原文出处:https://segmentfault.com/a/1190000008293902?utm_source=tag-newest 前言: 如不懂函数指针,请先查阅关于函数指针内容的资料(h ...

  8. 不同的phper该如何区别使用swoole和workerman?

       那么我们该怎样去区别应用swoole和workerman?                workerman workerman纯php写的,swoole是php的c扩展,性能肯定更高,百度.腾 ...

  9. 2019年8月23日 星期五(workerman和swoole的区别)

    两个框架我都有用过,workerman用得更多些,这2个框架都很出名,它们的出现大大的提高了php的应用范围及知名度 workerman和swoole都是php socket 服务器框架,都支持长连接 ...

随机推荐

  1. Spark思维导图之Spark Streaming

  2. Hive通过mysql元数据表删除分区

    1 创建表 hive命令行操作 CREATE TABLE IF NOT EXISTS emp( name STRING, salary FLOAT, subordinates ARRAY<STR ...

  3. 前端向服务器请求数据并渲染的方式(ajax/jQuery/axios/vue)

    原理: jQuery的ajax请求:complete函数一般无论服务器有无数据返回都会显示(成功或者失败都显示数据): return result

  4. jstl-----之<set>标签

    <table id="attachtab" border="0" cellpadding="0" cellspacing=" ...

  5. linux 如何保持兼容性

    参考链接:   https://www.cnblogs.com/MYSQLZOUQI/p/5383594.html

  6. 【mmall】递归查询子节点并排重

    代码 @Override public ServerResponse getSelfAndChildrenCategory(Integer categoryId) { if (categoryId ! ...

  7. (6)Java数据结构-- 转:JAVA常用数据结构及原理分析

    JAVA常用数据结构及原理分析  http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balab ...

  8. 查看oracle 用户执行的sql语句历史记录

      select * from v$sqlarea t order by t.LAST_ACTIVE_TIME desc

  9. CLR via C# 中关于装箱拆箱的摘录

     装箱: 为了将一个值类型转换成一个引用类型,要使用一个名为装箱(boxing)的机制.下面总结了对值类型的一个实例进行装箱操作时在内部发生的事情. 1.在托管堆中分配好内存.分配的内存量是值类型的各 ...

  10. python二叉树练习

    #coding=utf8 node_list=[5,3,6,2,4,None,8,1,None,None,None,7,9] class Node: def __init__(self,item): ...