首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
Think-Swoole: 全面协程化你的 ThinkPHP 应用
`ThinkPHP` 是一款经典的国产开源 `PHP` 开发框架。`ThinkPHP` 诞生于 `2006` 年,距今已经有 `17` 年历史。`ThinkPHP` 在国内的应用非常广泛,很多知名企业使用了 `ThinkPHP` 来构建 `Web` 项目。 早期版本的 `ThinkPHP` 主要是运行在 `PHP-FPM` 模式下。为了解决长连接、高并发、阻塞 `IO` 的问题,`ThinkPHP` 官方提供了 `Think-Swoole` 组件,底层全面适配了 `Swoole` 协程,使得 `ThinkPHP` 应用可以一键协程化。 GitHub 地址 ---- * [ThinkPHP](https://github.com/top-think/framework) * [Think-Swoole](https://github.com/top-think/think-swoole) 创建 ThinkPHP 项目 ----- ```shell composer create-project topthink/think tp ``` 使用 `composer` 命令可以快速创建一个 `ThinkPHP` 新项目。已有项目可跳过此步骤。 引入 Think-Swoole 组件 ---- ```shell composer require topthink/think-swoole ``` 启动 HTTP 服务 ----- 直接在命令行下启动 `HTTP` 服务端。 ```shell php think swoole ``` 启动完成后,默认会在 `0.0.0.0:80` 启动一个 `HTTP Server`,可以直接访问当前的应用。相关配置参数可以在 `config/swoole.php` 里面配置(具体参考配置文件内容)。 > 若本机已安装了 `Nginx`,可能 `80` 已被占用,可修改 `config/swoole.php` 设置为其他的端口 启动后通过 `http://127.0.0.1:9580/` 访问程序 ![](https://wenda-1252906962.file.myqcloud.com/uploads/202303/1_64095ba682863.png) 热更新 ---- 由于 `Swoole` 服务运行过程中 `PHP` 文件是常驻内存运行的,这样可以避免重复读取磁盘、重复解释编译,以便达到最高性能。所以更改业务代码后必须手动`reload` 或者 `restart` 才能生效。 `Think-Swoole` 提供了热更新功能,在检测到相关目录的文件有更新后会自动 `reload`,从而不需要手动进行 `reload` 操作,方便开发调试。 如果你的应用开启了调试模式,默认是开启热更新的。原则上,在部署模式下不建议开启文件监控,一方面有性能损耗,另外一方面对文件所做的任何修改都需要确认无误才能进行更新部署。 热更新的默认配置如下: ```php 'hot_update' => [ 'enable' => env('APP_DEBUG', false), 'name' => ['*.php'], 'include' => [app_path()], 'exclude' => [], ], ``` 当我们在应用的根目录下定义一个特殊的 `.env` 环境变量文件,里面设置了 `APP_DEBUG=true` 会默认开启热更新,你也可以直接把 `enable` 设置为`true` 。 连接池 ---- `Think-Swoole` 实现了数据库连接池功能,包括 `MySQL`、`Redis` 等。 使用连接池要先开启 `Swoole` 一键协程,需要配置如下参数: ```php 'coroutine' => [ 'enable' => true, 'flags' => SWOOLE_HOOK_ALL, ], ``` 连接池配置参数如下: ```php 'pool' =>[ 'db' => [ 'enable' => true, 'max_active' => 3, 'max_wait_time' => 5, ], 'cache' => [ 'enable' => true, 'max_active' => 3, 'max_wait_time' => 5, ], ], ``` 参数说明: * `enable`:是否启用连接池 * `max_active`:最大连接数,超过将不再新建连接 * `max_wait_time`:超时时间,单位为秒 > `max_active` 和 `max_wait_time` 需要根据自身业务和环境进行适当调整,最大化提高系统负载
发布于1年前 · 94 次浏览 · 来自
分享
Rango
`ThinkPHP` 是一款经典的国产开源 `PHP` 开发框架。`ThinkPHP` 诞生于 `2006` 年,距今已经有 `17` 年历史。`ThinkPHP` 在国内的应用非常广泛,很多知名企业使用了 `ThinkPHP` 来构建 `Web` 项目。 早期版本的 `ThinkPHP` 主要是运行在 `PHP-FPM` 模式下。为了解决长连接、高并发、阻塞 `IO` 的问题,`ThinkPHP` 官方提供了 `Think-Swoole` 组件,底层全面适配了 `Swoole` 协程,使得 `ThinkPHP` 应用可以一键协程化。 GitHub 地址 ---- * [ThinkPHP](https://github.com/top-think/framework) * [Think-Swoole](https://github.com/top-think/think-swoole) 创建 ThinkPHP 项目 ----- ```shell composer create-project topthink/think tp ``` 使用 `composer` 命令可以快速创建一个 `ThinkPHP` 新项目。已有项目可跳过此步骤。 引入 Think-Swoole 组件 ---- ```shell composer require topthink/think-swoole ``` 启动 HTTP 服务 ----- 直接在命令行下启动 `HTTP` 服务端。 ```shell php think swoole ``` 启动完成后,默认会在 `0.0.0.0:80` 启动一个 `HTTP Server`,可以直接访问当前的应用。相关配置参数可以在 `config/swoole.php` 里面配置(具体参考配置文件内容)。 > 若本机已安装了 `Nginx`,可能 `80` 已被占用,可修改 `config/swoole.php` 设置为其他的端口 启动后通过 `http://127.0.0.1:9580/` 访问程序 ![](https://wenda-1252906962.file.myqcloud.com/uploads/202303/1_64095ba682863.png) 热更新 ---- 由于 `Swoole` 服务运行过程中 `PHP` 文件是常驻内存运行的,这样可以避免重复读取磁盘、重复解释编译,以便达到最高性能。所以更改业务代码后必须手动`reload` 或者 `restart` 才能生效。 `Think-Swoole` 提供了热更新功能,在检测到相关目录的文件有更新后会自动 `reload`,从而不需要手动进行 `reload` 操作,方便开发调试。 如果你的应用开启了调试模式,默认是开启热更新的。原则上,在部署模式下不建议开启文件监控,一方面有性能损耗,另外一方面对文件所做的任何修改都需要确认无误才能进行更新部署。 热更新的默认配置如下: ```php 'hot_update' => [ 'enable' => env('APP_DEBUG', false), 'name' => ['*.php'], 'include' => [app_path()], 'exclude' => [], ], ``` 当我们在应用的根目录下定义一个特殊的 `.env` 环境变量文件,里面设置了 `APP_DEBUG=true` 会默认开启热更新,你也可以直接把 `enable` 设置为`true` 。 连接池 ---- `Think-Swoole` 实现了数据库连接池功能,包括 `MySQL`、`Redis` 等。 使用连接池要先开启 `Swoole` 一键协程,需要配置如下参数: ```php 'coroutine' => [ 'enable' => true, 'flags' => SWOOLE_HOOK_ALL, ], ``` 连接池配置参数如下: ```php 'pool' =>[ 'db' => [ 'enable' => true, 'max_active' => 3, 'max_wait_time' => 5, ], 'cache' => [ 'enable' => true, 'max_active' => 3, 'max_wait_time' => 5, ], ], ``` 参数说明: * `enable`:是否启用连接池 * `max_active`:最大连接数,超过将不再新建连接 * `max_wait_time`:超时时间,单位为秒 > `max_active` 和 `max_wait_time` 需要根据自身业务和环境进行适当调整,最大化提高系统负载
赞
1
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
还没有评论!
微信公众号
热门内容
作者其它话题
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 有没有办法判断当前是否运行在swoole守护进程里面?
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。