Swow 是一个专注于并发 I/O 的跨平台协程引擎
尽管现在 PHP 协程生态已经有了非常多样的选择,但所有的协程框架、库都存在着一个非常致命的问题,即它们都是从异步框架演变而来,并非开始就自底向上为协程而设计,且出于一些兼容性方面的考量,往往会牺牲掉很多本应具备的能力,又或是囿于历史包袱而无法做出合理的设计改变。
因此,Swow 项目致力于打造一个自底向上专为协程设计的高性能、高可控、易兼容的引擎,依托架构设计优势,全面释放协程技术的真正实力。此为 Swow 及其团队成员的初衷,我们将持续投入并为此付出努力,也欢迎你加入我们参与开源建设。
Swow 致力于使用最小 C 核心及多数 PHP 代码以支持 PHP 高性能网络编程,这决定了它在保障关键性能之外,更多的是通过 PHP 代码与 C 内核的无缝融合运作,提供强大的二次开发能力。
此外,它还提供了丰富多样的调试机制与强大且低门槛的调试工具,最大程度地确保开发者免受 BUG 困扰,普通开发者也能通过工具的加持具备接近专家级别的 DEBUG 能力,从而将开发效率最大化。
和任何开源项目一样, Swow 总是在最新的发行版提供更佳的稳定性和更强大的功能, 请尽量保证你使用的是最新版本。
Linux、 Windows、macOS 等常见操作系统,详见 发布文档 - 支持的操作系统
PHP 8.0.0 或以上版本,推荐使用最新版本
拉取源码:
composer require swow/swow
然后运行 vendor/bin
目录下的自动安装器 swow-builder
即可开始安装:
./vendor/bin/swow-builder --install
当你更新了 Swow 的源码时,你最好使用 rebuild
选项来重新编译 Swow 再安装:
./vendor/bin/swow-builder --rebuild --install
更多关于 swow-builder
的使用方法,请参考 安装文档 - 通过 Composer 安装。
克隆项目(也可以通过 Composer 引入,cd 到 vendor/swow/swow/ext
中手动编译):
git clone https://gitee.com/swow/swow.git
熟悉的构建三板斧,最后使用root权限安装到系统:
cd swow/ext && \ phpize && ./configure && \ make clean && make -j && \ sudo make install
也可在 最新的发行版 中直接下载 DLL。
安全问题应该通过邮件私下报告给 twosee@php.net。 你将在 24 小时内收到回复,如果因为某些原因你没有收到回复,请通过回复原始邮件的方式跟进,以确保我们收到了你的原始邮件。
你的贡献对于 Swow 的发展至关重要!
你可以通过以下方式来贡献:
通过 Pull Request 提交修复补丁或新的特性实现
帮助我们完善文档
Swow 使用 Apache License Version 2.0 开源。
Swow 也包含了一些第三方库,这些库的开源协议各不相同,请参考 LICENSES.full 获取完整的开源协议文本。
git 提供相当灵活的协作方式,最常见的方式为:协作者获得原始版本库的镜像,并在上面工作;发起者从协作者那里获取更新 协作者通过git clone创建一个镜像版本库: git clone user@url:~/path [local] 网络对于 git 来说是透明的,凡是可以访问的位置,如 http、ftp、ssh……,甚至本地路径,对于 git 来说没有什么区别。 通过以下命令,创建一个本机原
用途: 提供对网络通信的访问 Addressing, Protocol Families and Socket Types Looking up Hosts on the Network Finding Service Information Looking Up Server Addresses IP Address Representations TCP/IP Client and Serve
我正在研究一个基于代理的流行病模型。这个想法是单个代理根据他们在网络中观察到的情况(基于距离)做出决定。我在每个代理中都有几个功能,可以动态更新受感染接触者的数量,接触者表现出特定行为等。 下面的代码用于计算代理网络中受感染的联系人。 至少还有3个这样的函数可以保持表示代理网络中其他功能的其他代理的计数。现在,当我 有没有一种计算效率更高的方法来跟踪更大人口的网络统计数据?
This file describes the network protocol used by Ceph. In order to understand the way the structures are defined it is recommended to read the introduction of Network Encoding first. Hello The protoco
使用QQ轻游戏后台 QQ轻游戏后台用现成的房间逻辑,开发者可以使用进行房间创建、加入、离开、以及自带的帧同步以及消息同步方案。 使用QQ轻游戏后台详情跳转至此处 自建后台 使用自建后台,开发者可以使用引擎自带的 BK.WebSocket、BK.Socket、BK.HttpUtil三种方法进行后台数据的交换。 使用自建后台详情跳转至此处 因为自建后台的房间概念QQ轻游戏并不理解,为在聊天窗中模拟房间
德州仪器(TI)的CC3000 WiFi模块是一款小型银色封装,最终为您的Arduino项目带来了易于使用,价格合理的WiFi功能。 它使用SPI进行通信(而不是UART!),因此您可以根据需要快速推送数据,也可以根据需要尽可能慢地推送数据。 它有一个带有IRQ引脚的适当中断系统,因此您可以进行异步连接。 它支持802.11b/g,开放/ WEP/WPA/WPA2安全性,TKIP和AES。 带有“
Chrome应用通过sockets接口支持TCP和UDP协议,使网络通信成为可能。使用sockets接口时,声明权限比较特殊,并不在permissions中声明,而是直接在Manifest的sockets中声明: "sockets": { "udp": { "send": ["host-pattern1", ...], "bind": ["host-patt
在网络流量工具Charles的安装和用法和6.1 分析HTTP/HTTPS网络流量 这两节,我们介绍了对iOS的网络通信进行分析的方法。 利用文章介绍的方法,可以发现有以下几类: 发送明文密码 有的应用一点也不注意用户数据的安全,竟然发送明文密码。读者可以拿自己常用的App试试,应该能发现这种App,我发现我常用的一个电影相关App竟然用HTTP直接发送用户的明文密码。 发送密码的md5 有的应用