为什么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. cpp 标准库

    源:http://bbs.csdn.net/topics/300040713 C++标准库的所有头文件都没有扩展名.C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能.< ...

  2. 【css】正确的让文本换行

    通常文本换行我们会使用word-break属性,有两个值供我们选择 word-break: break-all; word-break: break-world; 那么如何区分这两个值呢,我们看图说话 ...

  3. scrapy模拟用户登录

    scrapy框架编写模拟用户登录的三种方式: 方式一:携带cookie登录,携带cookie一般请求的url为登录后的页面,获取cookie信息应在登录后的页面获取,cookie参数应转成字典形式 # ...

  4. CMFCToolBar、CMFCStatusBar

    首先删除注册表HKEY_CURRENT_USER\Software\应用程序向导生成的本地应用程序之下你这铬软件的配置 CMFCToolBar m_myToolBar; CMFCToolBarImag ...

  5. Python 20 Ajax全套

    概述 对于web应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...

  6. CentOS7下安装JDK详细过程

    Linux上一般会安装Open JDK,关于OpenJDK和JDK的区别:http://www.cnblogs.com/sxdcgaq8080/p/7487369.html 下面开始安装步骤: --- ...

  7. pythonの信号量

    #!/usr/bin/env python import threading,time def run(n): # 申请锁 semaphore.acquire() time.sleep(1) prin ...

  8. python中的多重循环

    列表中会经常用到多重循环. if __name__=='__main__': names = ['xiaoming','wangwu','lisi'] ages = ['] for name,age ...

  9. go语言中的运算符^,&

    一.^运算符 1.作为二元运算符 ^作二元运算符就是异或,包括符号位在内,相同为0,不相同为1 规则:1^1 =0, 0^0=0,1^0=1,0^1=1 事例: (1)0001 0100 ^ 0000 ...

  10. WinRAR代码执行漏洞CVE-2018-20250

    0x01 分析思路 利用https://github.com/googleprojectzero/winafl 漏洞分析框架模糊测试WinRAR. 几个存档格式的崩溃,例如RAR,LZH和ACE,这些 ...