Swoole 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Swoole 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Swoole 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Swoole 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Swoole 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache 2.0
开发语言 C/C++ PHP
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 matyhtf
适用人群 未知
收录时间 2014-03-03

软件简介

Swoole 是一个使用 C++ 语言编写的基于异步事件驱动和协程的并行网络通信引擎,为 PHP 提供协程、高性能网络编程支持。提供了多种通信协议的网络服务器和客户端模块,可以方便快速的实现 TCP/UDP服务高性能WebWebSocket服务物联网实时通讯游戏微服务等,使 PHP 不再局限于传统的 Web 领域。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (21)

加载中
swoole感觉做长连接就不错 其他就算了 性能比不上golang 开发速度比不上PHP。。
2020/11/17 12:37
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
你还是好好学习吧
2020/09/03 13:23
回复
举报

引用来自“eechen”的评论

很多人都喜欢吐槽Swoole的文档,个人认为 #Swoole# 项目有必要出书,比如书名可以是: 《高性能PHP7网络编程:Swoole权威指南》 内容介绍如何使用Swoole进行开发,项目实例可以是开发一个基于Web的即时通讯软件,高级部分还可以加入如何使用C开发PHP扩展。
你这种想法好。但是怎么不考虑你去写。eechen不是php 大佬吗
2018/11/20 08:57
回复
举报
出书就算了,容易过时
2020/03/31 15:02
回复
举报
swoole都全协程化了,还async/await,逗我呢
2018/11/16 10:32
回复
举报
PHP缺乏async/await语法糖会导致使用#Swoole#陷入Callback Hell
2018/06/14 18:21
回复
举报
打分: 力荐
虽然不用php,还是支持
2018/06/14 18:19
回复
举报
只有swoole才可以救php!
2018/04/10 19:50
回复
举报
打分: 还行
还是回归PHP7.2的好
2018/01/30 17:02
回复
举报
折腾了几天在FreeBSD上安装 swoole pecl还是源码编译都死活安装不上,放弃了,不知道是不是韩总不支持FreeBSD?#Swoole#
2017/09/11 09:10
回复
举报
很多人都喜欢吐槽Swoole的文档,个人认为 #Swoole# 项目有必要出书,比如书名可以是: 《高性能PHP7网络编程:Swoole权威指南》 内容介绍如何使用Swoole进行开发,项目实例可以是开发一个基于Web的即时通讯软件,高级部分还可以加入如何使用C开发PHP扩展。
2017/08/06 22:34
回复
举报
更多评论
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2019/06/06 14:09

一例swoole_process运行swoole_http_server

swoole_process swoole_process('执行的文件路径','文件所需的参数');//利用swoole-process执行一个外部脚本 swoole_process__construct(回调函数, redirect_stdin_stdout, 是否创建进程通信用的管道) 参数redirect_stdin_stdout 值为true子进程返回的结果不输出到屏幕,false输出到屏幕 swoole_process::wait()//程序执行完毕后,回收子进程 用swoole_http_server实现一例http服务器 <?php $server = new swoole_http...

0
0
发表了博客
2018/05/30 14:37

swoole_server的相关属性

在swoole中,一个swoole_server的相关属性可以通过 $serv->set( $array configs ); 函数来配置,这些配置选项使得swoole更加灵活。 示例: $serv = new swoole_server("0.0.0.0", 9501); $serv->set(array( 'worker_num' => 8, 'max_request' => 10000, 'max_conn' => 100000, 'dispatch_mode' => 2, 'debug_mode'=> 1, 'daemonize' => false, )); 配置选项以及相关介绍如下: [TOC] ####1.worker_num 描述:指定启动的worker进...

0
0
发表了博客
2019/05/05 15:09

swoole之建立 tcp server

一、swoole的安装 参照官网:https://wiki.swoole.com/wiki/page/6.html 二、代码部分 服务端: <?php $host = "127.0.0.1"; $port = 9501; $mode = SWOOLE_PROCESS; // 多进程模式 默认 $sock_type = SWOOLE_SOCK_TCP; // 创建tcp socket 默认 //创建Server对象,监听 127.0.0.1:9501端口 $serv = new swoole_server($host, $port, $mode, $sock_type); $serv->set([ // ps aft | grep php 查看 'worker...

0
0
发表了博客
2018/03/26 10:03

Swoole server函数列表(转载)

swoole_server::__construct swoole_server::set swoole_server::on swoole_server::addlistener swoole_server::handler swoole_server::start swoole_server::reload swoole_server::shutdown swoole_server::addtimer swoole_server::deltimer swoole_server::after swoole_server::close swoole_server::send swoole_server::connection_info swoole_server::connection_list swoole_server::stats swoole_server::task swo...

0
0
发表了博客
2018/08/21 10:10

swoole http server 性能优化

上线了一个基于 swoole http server 的服务以后,发现这个服务的请求耗时监控毛刺十分严重,接口耗时波动比较大,经过一段时间的分析,发现这个服务 response 包十分大,有些 response 包高达1 ~ 2M,甚至更大,这样就很清楚了,因为包太多,导致服务相应波动比较大。 这里稍微解释下,为什么 response 包会导致相应时间波动,这里主要有两个方面的影响,第一是包大会导致 swoole 之间进程通信更加耗时,并占用更多资源,第二是...

0
1
发表了博客
2019/04/10 10:10

[Swoole入门到进阶] [公开课] Swoole服务器-Server的四层生命周期

PHP 完整生命周期   执行PHP文件     PHP扩展模块初始化(MINIT)       PHP扩展请求初始化(RINIT)       执行 PHP 逻辑       PHP扩展请求结束(RSHUTDOWN)       PHP脚本清理     PHP扩展模块结束(MSHUTDOWN)   终止PHP PHP 请求生命周期   如果是 cli 执行 PHP 脚本,那么会完整执行整个过程,因为存在进程创建。   如果是 php-fpm 请求响应阶段,那么会执行中间四步过程,等到...

0
0
2019/06/19 12:42

Swoole的Server端常用方法和属性

``` /** * Reactor是master中的独立的几个线程, 在该线程中的每一个子线程中都运行着epoll函数的实例. * Swoole所有对于事件的监听, 都会在这些线程中实现.比如,来自客户端的连接, 本地通信的管道.以及,异步操作的文件.文件描述符.都会注册在这些epoll中 * * timer基于Reactor线程中的epoll实例的timeout机制,实现的. * timer进程是基于,epoll实例的Reactor线程来运行的 * 在taskWorker中是没有Reactor线程的, 所以不能调用swo...

0
0
发表了博客
2019/05/23 14:22

swoole中http_server的配置与使用

swoole中为我们提供了一个swoole_http_server类,方便我们处理http请求。 但是它对http协议的支持并不完整,所以一般建议在前面加一层nginx进行代理,对于php文件的处理交由swoole处理。 一、创建一个简单的http服务 <?php //创建一个http server服务 $server = new swoole_http_server('0.0.0.0', 8888); $server->set([ 'package_max_length' => 1024 * 1024 * 10, //设置文件上传的临时目录 'upload_t...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2019/12/17 21:42

千人齐聚共探开源,剑指源码尖峰对话 | 2019 OSC 年终盛典图文回顾

12月15日,2019年 OSC源创会年终盛典在深圳科兴科学园国际会议中心成功举办,本次年终盛典 活动详情 请查看, PPT下载 请点击,视频回看请点击。 作为开源中国官方最盛大的技术沙龙,本次年终盛典为期 1 天,上午为主会场,下午设置架构、大前端、综合技术、开源治理、腾讯开源共 5 个分会场。 大会邀请 30+ 国内知名技术大牛、50+ 优秀开源软件作者,聚集了近千名开发精英,以“剑指源码,尖峰对话”为主题,共同探讨 2019 年的...

9
2
2019/08/09 11:34

swoole停止队列问题

我 swoole 开启一个常驻内存脚本 里面有 redis 队列 我前端请求这个接口 前端有两个按钮,停止队列和开始队列 怎么实现停止队列 大佬们有思路吗 我业务逻辑是这样子,一直循环插入队列,然后跑队列 跑完在插入 插入在跑完

4
0
2019/05/25 18:03

请问swoole4.4怎么操作redis

看官方文档说 4.3版本以后 --enable-async-redis参数被废弃了 我就通过coroutine协程的方式把这个示例运行了一下 不成功 请问这个该怎么解决 看官方文档也没用4.4的文档 最新的还停留在4.2.5

3
0
2018/06/22 10:22

为什么基于 swoole 有那么多框架轮子,而不是提供一个好用的轮子?

为什么基于 swoole 有那么多框架轮子,而不是提供一个好用的轮子?

9
0
发表了问答
2018/12/04 10:54

既然韩天峰的Swoole4能实现了Golang的所有功能了,PHPer还有必要学Golang吗?

既然韩天峰的Swoole4能实现了Golang的所有功能了,PHPer还有必要学Golang吗? 性能比较,Swoole和Golang性能也相差无几。 性能比较:https://wiki.swoole.com/wiki/page/63.html swoole4的协程:https://segmentfault.com/a/1190000017243966

9
1
发表了问答
2018/07/03 07:51

【开源访谈】韩天峰:从 2.x 跃入 4.x ,Swoole 开发背后的故事

6月14日,流行 PHP 协程引擎 Swoole 正式发布 4.0 版本,支持在 PHP 代码中的任意位置使用协程,并带来了全局变量隔离、支持 MySQL 存储过程等新特性。 Swoole 的上一个版本系列是 5 月份发布的 2.2.0 ,为什么会跳过 3.0 直接跃入 4.0 开发?Swoole 3.0 原本计划具备哪些特性?Swoole 4.0 放弃基于 libco 做协程的原因又是什么?本期【开源访谈】邀请到了 Swoole 项目创始人韩天峰老师 @matyhtf ,为大家分享 Swoole 开发背后的...

33
12
发表了问答
2017/12/15 09:47

[swoole]会不会始终只有一个进程在处理消息?在addProcess里sendMessage,会把消息发到哪个进程?

public function handle() { $server = new Server('0.0.0.0', env('TASK_CLIENT_PORT')); $server->set([ 'worker_num' => 4, ]); $server->on('WorkerStart', [$this, 'onWorkerStart']); $server->on('Open', [$this, 'onOpen']); $server->on('Message', [$this, 'onMessage']); $server->on('PipeMessage', [$this, 'onPipeMessage']); ...

1
0
发表了问答
2017/11/10 15:27

swoole_process 多进程爬虫url去重和数据存储问题

用swoole_process创建主进程,然后再开启多个子进程,从主进程首次爬取主页面,把爬取到的url过滤后平均分发给多个子进程,每个子进程去爬取收到的url,进程间数据共享用的是redis队列,从url爬取到数据后先经过过滤,过滤完成以后再考虑保存到数据库,同时新的url地址保存到redis队列,等待进程空闲,再pop出来分发任务给子进程。 现在有两个问题: 1、现在有个问题,进程之间是互不干涉的,可能存在A,B两个进程同时拿到了从“相...

6
0
发表了问答
2017/07/25 10:59

swoole,异步的PHP程序中可以使用Swoole\Http\Client作为WebSocket客户端?

初学者只懂得FastCGI php执行有超时。 如何做得到web js websocket长时间通信的? 看了swoole websocket 只会从js 做websocket, 对:异步的php程序做websocket客户端,是什么意思。 是通过cli执行吗?那如何触发消息返回给web?ajax轮训消息?

3
0
发表了问答
2016/07/08 17:57

swoole的httpserver中,怎么能够针对所有的$response->end()增加一个回调函数的操作呢?

@matyhtf 你好,想跟你请教个问题: swoole的httpserver中,怎么能够针对所有的$response->end()增加一个回调函数的操作呢?类似于析构函数差不多。 附场景:一个webapi,接受请求的时候增加一个并发锁,结束请求的时候解除(返回的地方比较多,所以想通过$response->end()绑定一个回调函数来操作) 菜鸟求大师指点。。。

4
0
发表了问答
2016/01/13 10:36

php swoole+amqp+rabbitmq整合多进程启动channel被locked问题

运行环境:swoole 1.7.21 稳定版 ,mac os x 10.10 , php 5.5, rabbitmq3.5, amqp 1.6 <?php error_reporting(E_ALL^E_NOTICE); date_default_timezone_set('Asia/Shanghai'); class send { private $redis; private $serv; private $mq_conn=null; private $mq_channel=null; private $mq_exchange=null; private $mq_queue=null; private $mq_exchange_name = "swoole_exchanger_name"; pri...

3
4
发表了问答
2016/09/16 11:14

swoole_client网络问题不能实时触发onClose事件

swoole_client异步连接成功后,如果是服务端主动关闭是可以实时触发onClose事件回调的,可是如果是网络出现了问题(比如说关闭网络),为什么不能立即触发onclose函数?环境为mac + php7 + swoole-1.8.11,有没有遇到同样问题的?

5
0
发表了问答
2016/02/26 13:27

swoole支持MongoDB异步吗?

搜索了下官网,说要支持,又搜索了下源码,没发现

1
0
发表了问答
2015/08/14 10:58

swoole_process里的消息队列和pipe通信可以同时使用么?

@matyhtf 你好,想跟你请教个问题: 如题。 我想实现的是让进程的消息队列去分发和处理任务,然后再子进程中用pipe通信通知任务处理情况,但是发现在消息队列打开的时候,pipe通信好像不生效,要实现该怎么处理呢?刚接触swoole还不太了解,求指教

1
0
发表了问答
2015/07/19 11:20

php异步扩展和py做抓取那个更好呢?

@matyhtf 你好,想跟你请教个问题: 最近我开始创业,需要用的页面抓取,用上php异步扩展和py抓取上, 成本哪个会好一点呢? 在里以使用者都非常熟悉两者语言为大前提。

17
0
发表了问答
2015/05/15 13:58

阅读swoole遇到的问题

@matyhtf 你好,想跟你请教个问题: @matyhtf 你好,想跟你请教个问题: if (SwooleTG.type == SW_THREAD_REACTOR) { return swReactorThread_send2worker((void *) &(task->data), send_len, target_worker_id); } else { return swServer_send2worker_blocking(serv, (void *) &(task->data), send_len, target_worker_id); } static sw_inline int swServer_send2worker_blocking(swSe...

1
1
发表了问答
2014/10/22 10:47

编译运行examples下server.c,提示Fatal Error: manager process exit. status=0, signal=11

@matyhtf 你好,想跟你请教个问题: 我是将swoole直接开发库来编译运行C服务程序的 编译运行:swoole-src-swoole-1.7.6-stable/examples/server.c,后有如下警告: WARN swServer_signal_hanlder: Fatal Error: manager process exit. status=0, signal=11. 然后manage进程退出了,worker父进程变成了1 这是为什么呢? 我的linux版本是:2.6.32-358.el6.x86_64 GNU/Linux...

1
0
发表了问答
2014/04/18 20:17

一些关于swoole的问题(7个),求版主回答

问题1: swoole的C架构是什么样子,你使用的是HS/HA 还是 L/F 管理工作节点。 问题2: swoole每次接收到连接是否是创建新的work进程或work线程,然后关闭连接后销毁,还是有其他机制比如prework,如果是prework这个阀值是多少。 问题3: swoole是如何有效利用多核的,比如线程或者进程过多竞争情况下。 问题4: 看官方介绍swoole是异步非阻塞,可以理解异步是epoll提供的事件复用机制,非阻塞swoole是怎么体现的,比如一个事件就...

6
4
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
21 评论
1K 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部