🚀 A modern, high-performance, native PHP coroutine engine.
MIT License
Published by cclilshy 15 days ago
cloudtay/ripple
取代 cclilshy/p-ripple-core
Stream
对象新增 waitForRead/Write()
方法Published by cclilshy 17 days ago
HTTP服务端支持读写双全工模式
HTTP服务端移除Symfony标准
优化Tunnel的SSL签名SNI校准
新增协程Suspension对象
新增协程Container
修复部分已知问题
Published by cclilshy 28 days ago
Published by cclilshy about 1 month ago
option使用参数
capture_read
与capture_write
'capture_read' => static function (string $content,Closure $read) {
// TODO: 做任何事
// 放行内容
return $read($content);
};
posix
与pcntl
扩展的强制依赖未启用
pcntl
扩展与posix
扩展的环境下使用Process::run()
时
会得到一个模拟子进程运行的抽象Runtime, 与多进程运行时表现一致
但实际该Runtime
的生命周期与主进程一致,当kill
该Runtime
时, 等于kill主进程
该更新使得Windows
在单进程环境依然能进行模拟多进程运行时的开发
use Co\Net;
use Co\Plugin;
use Psc\Core\Http\Client\Capture\ServerSentEvents;
use Psc\Core\Http\Server\Chunk;
use Psc\Core\Http\Server\Request;
use Psc\Core\Http\Server\Response;
$server = Net::Http()->server('http://127.0.0.1:8008/');
$server->onRequest(static function (Request $request, Response $response) {
// 设置请求头
$response->headers->set('Content-Type', 'text/event-stream');
// 创建生成器
$generator = static function () {
for ($i = 0; $i < 10; $i++) {
// 使用分段助手进行事件分段
yield Chunk::event('hello', 'test', \strval($i));
\Co\sleep(0.1);
}
yield '';
};
// 将生成器设置为body部分
$response->setContent($generator());
$response->respond();
});
$server->listen();
use Co\Net;
use Co\Plugin;
use Psc\Core\Http\Client\Capture\ServerSentEvents;
use Psc\Core\Http\Server\Chunk;
use Psc\Core\Http\Server\Request;
use Psc\Core\Http\Server\Response;
# 创建SSE解析器
$capture = new ServerSentEvents();
# 定义SSE事件处理器
$capture->onEvent(function (array $event) {
\var_dump($event);
});
# 从解析器中取出写拦截器(抓包器)
$writeHandler = $capture->getWriteCapture();
# 从解析器中取出读拦截器(抓包器)
$readHandler = $capture->getReadCapture();
$response = $guzzleClient->get('http://127.0.0.1:8008/', [
'headers' => [
'Accept' => 'text/event-stream',
'Content-Type' => 'text/event-stream',
],
# 请求注入抓包器
'capture_write' => $capture->getWriteCapture(),
'capture_read' => $capture->getReadCapture(),
]);
Published by cclilshy about 2 months ago
Co
命名空间取代P
并在doc中声明弃用将保留
P
命名空间至v1.0
发布版本之前
\Co\Plugin::Guzzle()->getHttpClient();
\Co\Plugin::Guzzle()->getHttpClient()->getConnectionPool();
onRequest
方法Gzip
压缩 @lidongyooo #21以下方法将不再返回
GuzzleHttp\Client
对象
\Co\Plugin::Guzzle();
请通过以下API获取
\Co\Plugin::Guzzle()->newClient(array|null $config = []) : Client;
Published by cclilshy 2 months ago
WebSocket服务器:支持更多选项以使用底层的心跳机制 @lidongyooo in https://github.com/cloudtay/p-ripple-core/pull/19
File模块:扩展文件监听动态调整
Worker模块:优化工作进程资源释放机制
HTTP客户端:支持处理分块传输编码
HTTP客户端:长连接支持底层心跳
HTTP客户端:修复连接池事件冲突
Published by cclilshy 2 months ago
Published by cclilshy 2 months ago
Published by cclilshy 3 months ago
Full Changelog: https://github.com/cloudtay/p-ripple-core/compare/v0.3.1...v0.3.3
Published by cclilshy 3 months ago
Full Changelog: https://github.com/cloudtay/p-ripple-core/compare/v0.2.96...v0.3.1
Full Changelog: https://github.com/cloudtay/p-ripple-core/compare/v0.2.96...v0.3.1
Published by cclilshy 3 months ago
Full Changelog: https://github.com/cloudtay/p-ripple-core/compare/0.2.95...v0.2.96
Published by cclilshy 3 months ago
Published by cclilshy 3 months ago
Full Changelog: https://github.com/cloudtay/p-ripple-core/commits/0.2.94
Published by cclilshy 3 months ago
Full Changelog: https://github.com/cloudtay/p-ripple-core/commits/0.2.93
Published by cclilshy 3 months ago
Full Changelog: https://github.com/cloudtay/p-ripple-core/commits/0.2.84
Published by cclilshy 4 months ago
Full Changelog: https://github.com/cloudtay/p-ripple-core/compare/0.1.3...0.1.6
Published by cclilshy 4 months ago
Full Changelog: https://github.com/cloudtay/p-ripple-core/compare/0.1.2...0.1.3
Published by cclilshy 4 months ago
Full Changelog: https://github.com/cloudtay/p-ripple-core/compare/0.0.3...0.1.2
Published by cclilshy 4 months ago
Full Changelog: https://github.com/cloudtay/p-ripple-core/commits/0.0.1