{"id":13699963,"url":"https://github.com/toxmc/fast-laravel","last_synced_at":"2025-05-04T18:33:54.746Z","repository":{"id":57072216,"uuid":"206558112","full_name":"toxmc/fast-laravel","owner":"toxmc","description":"基于Swoole的高性能HTTP服务器，加速您Laravel应用程序。","archived":false,"fork":false,"pushed_at":"2021-05-17T01:23:29.000Z","size":203,"stargazers_count":34,"open_issues_count":0,"forks_count":9,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-21T07:17:46.964Z","etag":null,"topics":["apm","crontab","http","laravel","process","restart-server","server","swoole","table","task","tracker"],"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/toxmc.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2019-09-05T12:26:31.000Z","updated_at":"2023-05-21T16:56:53.000Z","dependencies_parsed_at":"2022-08-24T10:40:53.401Z","dependency_job_id":null,"html_url":"https://github.com/toxmc/fast-laravel","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toxmc%2Ffast-laravel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toxmc%2Ffast-laravel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toxmc%2Ffast-laravel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toxmc%2Ffast-laravel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toxmc","download_url":"https://codeload.github.com/toxmc/fast-laravel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252382816,"owners_count":21739218,"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":["apm","crontab","http","laravel","process","restart-server","server","swoole","table","task","tracker"],"created_at":"2024-08-02T20:00:46.548Z","updated_at":"2025-05-04T18:33:53.544Z","avatar_url":"https://github.com/toxmc.png","language":"PHP","funding_links":[],"categories":["Framework Integration"],"sub_categories":[],"readme":"中文 | [English](./README_EN.md)\n## 简介\n```\n  ___                   _                             _ \n / __)          _      | |                           | |\n| |__ ____  ___| |_    | | ____  ____ ____ _   _ ____| |\n|  __) _  |/___)  _)   | |/ _  |/ ___) _  | | | / _  ) |\n| | ( ( | |___ | |__   | ( ( | | |  ( ( | |\\ V ( (/ /| |\n|_|  \\_||_(___/ \\___)  |_|\\_||_|_|   \\_||_| \\_/ \\____)_|                                             \n\n```\n\u003e 🚀[fast-laravel](https://packagist.org/packages/toxmc/fast-laravel). \n\u003e是基于 [Swoole](https://https://github.com/swoole/swoole-src) 实现的高性能、常驻内存的 `laravel`  框架 `composer` 扩展包，\n\u003e性能较传统基于 `PHP-FPM` 的服务有质的提升，提供超高性能的同时，也保持着 `Laravel` \n\u003e框架的优点。基本上无需变更业务代码的前提下即可使原有项目蜕变为常驻内存服务从而提升响应速度。\n\u003e扩展提供了 `热加载`、`异步任务`、`Crontab 秒级定时任务`、`性能分析工具`、`自定义进程` 等非常便捷的功能，满足丰富的技术场景和业务场景，开箱即用。\n\n\n## 扩展初衷\n\n`Laravel` 是优雅的 `PHP Web` 开发框架。具有高效、简洁、富于表达力等优点。采用 `MVC` 设计，\n是崇尚开发效率的全栈框架。是最受关注的 `PHP` 框架。然而 `Laravel` 最为人诟病的缺点就是：\u003cb\u003e慢、笨重\u003c/b\u003e。\n如何改变这种情况？ 实际项目中也遇到接口响应速度不理想，加机器、加缓存、`OPcache`、升级`PHP7`都做了，\n还是不理想，还能进一步吗？考虑到各种成本。换 `go` 语言还是换基于 `swoole` 的协程框架。\n考虑到业务量，重写业务成本过高。于是 `fast-laravel`诞生了。\n\n## 服务器要求\n\n`Fast-Laravel` 基于 `swoole` 的所以对系统环境有一些要求，仅可运行于 `Linux` 和 `Mac` 环境下，\n但由于 `Docker` 虚拟化技术的发展，在 `Windows` 下也可以通过 `Docker for Windows` 来作为运行环境。\n以及 `Windows` 下子系统的发展 `WSL` 也是不错的选择，推荐 `Ubuntu`。   \n\n## Docker\n[dockerfiles](https://github.com/toxmc/fast-laravel/tree/master/dockerfiles) 项目内已经为您准备好了。可直接构建运行。\n\nWindows Docker Desktop with WSL1's docker client.\nDocker Fedora 31, CPUs:4, Memory:4G.\n```\ndocker build -t=fast-laravel dockerfiles\ndocker run --rm -p 9100:9100 -d fast-laravel:latest\ndocker exec -it `docker ps -q` /bin/bash\n\n[root@a26c3596e1b8 www]# wrk -c32 -t8 -d 30s http://127.0.0.1:9100/api/test/info\nRunning 30s test @ http://127.0.0.1:9100/api/test/info\n  8 threads and 32 connections\n  Thread Stats   Avg      Stdev     Max   +/- Stdev\n    Latency     6.89ms   14.42ms 318.44ms   94.69%\n    Req/Sec     0.97k   233.68     2.33k    74.63%\n  232532 requests in 30.09s, 52.34MB read\nRequests/sec:   7727.54\nTransfer/sec:      1.74MB\n```\n\n\n当您不想采用 Docker 来作为运行的环境基础时，您需要确保您的运行环境达到了以下的要求：   \n\n - PHP \u003e= 7.1\n - Swoole PHP 扩展 \u003e= 4.0\n - JSON PHP 扩展\n - MongoDB PHP 扩展 （性能分析tracker使用）\n - tideways_xhprof 或 tideways PHP 扩展 （性能分析tracker使用）\n\n## 安装 Fast-Laravel\n\nFast-Laravel 使用 [Composer](https://getcomposer.org) 来管理项目的依赖，在使用 Fast-Laravel 之前，\n请确保你的运行环境已经安装好了 Composer。通过 `Composer` 安装。\n\n1. 安装 `fast-laravel`\n    ```\n    composer require toxmc/fast-laravel -vvv\n    ```\n2. 发布配置信息\n    ```\n    php artisan vendor:publish --tag=fast-laravel\n    ```\n    或者\n    ```\n    php artisan http publish\n    ```\n3. 生成 `fast` 命令所需的配置（原理复制一份 `fast-laravel`  启动所需的配置到 `/storage/fast_laravel.json`  文件中主要为了解决 `config` 和 `route` `reload` 重启不生效的问题）\n    ```\n    php artisan http config\n    ```\n    \n这样 `fast-laravel` 扩展就安装完成了。\n\n## 命令\n```\nphp artisan http {action : publish|config|infos}.\n```\n\n|action | 参数意义    | 命令      |\n|-------|-------------|-----------|\n|publish  |发布配置信息     |php artisan http publish\n|config   |生成fast命令所需的配置\u003c/br\u003e原理：复制一份fast启动所需的配置到json文件中.\u003cbr\u003e主要为了解决config和route重载不生效的问题。|php artisan http config\n|infos  |查看服务信息 |php artisan http infos\n\n\n```\nphp fast http:{action : start|stop|restart|reload|infos} \n{-d|--daemon: Whether run as a daemon for start \u0026 restart}.\n{-a|--access_log: It's will display access log on every request.}.\n```\n\n|action | 参数意义    | 命令      |\n|-------|-------------|-----------|\n|start  |启动服务     |php fast http:start\n|stop   |停止服务     |php fast http:stop\n|restart|重启服务     |php fast http:restart\n|reload |重载服务     |php fast http:reload\n|infos  |查看服务信息 |php fast http:infos\n\n\n## supervisor 管理服务\n\n例举MAC下安装\n```\nbrew install supervisor\n```\n\n启动\n```\nsupervisord -c supervisor/supervisor.conf\n```\n\n管理\n```\n[xmc@mc fast-laravel (master ✗)]$ supervisorctl -c supervisor/supervisor.conf\nfast-laravel-monitor             RUNNING   pid 18131, uptime 0:03:11\n\nsupervisor\u003e help\n\ndefault commands (type help \u003ctopic\u003e):\n=====================================\nadd    exit      open  reload  restart   start   tail   \navail  fg        pid   remove  shutdown  status  update \nclear  maintail  quit  reread  signal    stop    version\n\nsupervisor\u003e status\nfast-laravel-monitor             RUNNING   pid 29146, uptime 3:03:36\n```\n\n## 热重载\n\u003e 建议生产环境关闭该服务。仅限开发时使用。\n\n* `hot_reload`： 是否开启热重载\n* `hot_reload_type`： 热重载类型，支持 `inotify` 和 `tick`\n    * `inotify` 依赖 `inotify PHP` 扩展\n    * `tick` 是利用 `swoole` 定时器，定时检测文件是否变化，进而进行 `reload` 操作\n* `hot_reload_paths`： 监控的文件变更目录。只要属于目录内的文件，发生变动，就会进行 `reload`\n\n```\n    'server'    =\u003e [\n        'hot_reload'          =\u003e env('SWOOLE_HOT_RELOAD', false),\n        'hot_reload_type'     =\u003e env('SWOOLE_HOT_RELOAD_TYPE', ''),// inotify or tick\n        'hot_reload_paths'    =\u003e [\n            base_path('app'),\n            base_path('config'),\n        ],\n    ]\n```\n\n\n2：fswatch\n```\nbrew install fswatch\n\n[xmc@mc fast-laravel (master ✗)]$ sh fswatch.sh /Users/xmc/PhpstormProjects/iizhu/api\nStarting fswatch...\nFile /Users/xmc/PhpstormProjects/iizhu/api/app/Service/TestService.php has been modified.\nReloading swoole_http_server...\n\u003e success\nFile /Users/xmc/PhpstormProjects/iizhu/api/app/Service/TestService.php has been modified.\nReloading swoole_http_server...\n\u003e success\n```\n\n#### Alternative\n* [laravel-swoole](https://github.com/swooletw/laravel-swoole)\n#### Alternative Framework\n* [Swoft](https://www.swoft.org/)\n* [easyswoole](http://www.easyswoole.com/)\n* [hyperf](http://www.hyperf.io/)\n\n#### Others\n* Q群:190349019","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoxmc%2Ffast-laravel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoxmc%2Ffast-laravel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoxmc%2Ffast-laravel/lists"}