{"id":13699956,"url":"https://github.com/huang-yi/shadowfax","last_synced_at":"2025-04-04T15:07:58.230Z","repository":{"id":53886781,"uuid":"105563521","full_name":"huang-yi/shadowfax","owner":"huang-yi","description":"Run Laravel on Swoole.","archived":false,"fork":false,"pushed_at":"2022-01-15T16:35:46.000Z","size":525,"stargazers_count":352,"open_issues_count":12,"forks_count":35,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-28T14:06:25.414Z","etag":null,"topics":["coroutine","http","laravel","laravel-swoole","shadowfax","swoole","websocket"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/huang-yi.png","metadata":{"files":{"readme":"README-cn.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-02T17:28:46.000Z","updated_at":"2024-09-03T13:25:15.000Z","dependencies_parsed_at":"2022-08-21T13:20:19.030Z","dependency_job_id":null,"html_url":"https://github.com/huang-yi/shadowfax","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huang-yi%2Fshadowfax","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huang-yi%2Fshadowfax/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huang-yi%2Fshadowfax/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huang-yi%2Fshadowfax/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/huang-yi","download_url":"https://codeload.github.com/huang-yi/shadowfax/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247198453,"owners_count":20900080,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coroutine","http","laravel","laravel-swoole","shadowfax","swoole","websocket"],"created_at":"2024-08-02T20:00:46.445Z","updated_at":"2025-04-04T15:07:58.209Z","avatar_url":"https://github.com/huang-yi.png","language":"PHP","funding_links":[],"categories":["Framework Integration"],"sub_categories":[],"readme":"[English](README.md) | 中文\n\n# Shadowfax\n\nShadowfax是一个Laravel拓展包，它可以让你的Laravel应用运行在[Swoole](https://www.swoole.com/)之上，以获得巨大的性能提升。\n\n## 特性\n\n- 不破坏Laravel的开发体验，让Laravel程序在Swoole与PHP-FPM上都能运行\n- 可放心地启用协程特性\n- 无感知地使用数据库/Redis连接池\n\n更多特性请阅读[《完整文档》](https://shadowfax.huangyi.tech/docs)。\n\n## 快速使用\n\n使用Composer将Shadowfax安装到Laravel项目中：\n\n```shell\ncomposer require huang-yi/shadowfax\n```\n\n再用Artisan命令`shadowfax:publish`发布配置文件:\n\n```shell\nphp artisan shadowfax:publish\n```\n\n最后执行Shadowfax命令`start`启动服务器：\n\n```shell\nphp shadowfax start\n```\n\n现在，你就可以通过`http://127.0.0.1:1215`来访问你的项目了。\n\n## Benchmarks\n\n我们使用开源软件[wrk](https://github.com/wg/wrk)进行压力测试。\n\n### 环境1\n\n- 硬件: 1 CPU, 4 Cores, 16GB Memory\n- MacOS 10.15.3\n- PHP 7.3.12（启用opcache）\n- Swoole 4.4.13\n- Laravel 7（无session中间件）\n- Shadowfax 2.0.0（20个worker进程）\n\nwrk启动4个线程，并发200进行压测：\n\n```shell\nwrk -t4 -c200 http://127.0.0.1:1215/\n```\n\n结果为**12430.20rps**：\n\n```shell\nRunning 10s test @ http://127.0.0.1:1215/\n  4 threads and 200 connections\n  Thread Stats   Avg      Stdev     Max   +/- Stdev\n    Latency    26.44ms   31.44ms 212.73ms   84.28%\n    Req/Sec     3.13k   839.99     6.07k    65.75%\n  124418 requests in 10.01s, 312.06MB read\n  Socket errors: connect 0, read 54, write 0, timeout 0\nRequests/sec:  12430.20\nTransfer/sec:     31.18MB\n```\n\n### 环境2\n\n- 硬件: 2 CPUs, 2 Cores, 4GB Memory\n- CentOS 7.5.1804\n- PHP 7.3.16（启用opcache）\n- Swoole 4.4.17\n- Laravel 7（无session中间件）\n- Shadowfax 2.0.0（10个worker进程）\n\nwrk启动2个线程，并发100进行压测：\n\n```shell\nwrk -c100 http://127.0.0.1:1215/\n```\n\n结果为**4001.76rps**：\n\n```shell\nRunning 10s test @ http://127.0.0.1:1215/\n  2 threads and 100 connections\n  Thread Stats   Avg      Stdev     Max   +/- Stdev\n    Latency    25.06ms   12.11ms  85.92ms   60.94%\n    Req/Sec     4.02k    41.46     4.08k    79.79%\n  40321 requests in 10.08s, 101.13MB read\nRequests/sec:   4001.76\nTransfer/sec:     10.04MB\n```\n\n## 单元测试\n\n```shell\ncomposer test\n```\n\n## 协议\n\nShadowfax是一个开源软件，遵循[MIT协议](LICENSE)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuang-yi%2Fshadowfax","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhuang-yi%2Fshadowfax","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuang-yi%2Fshadowfax/lists"}