ThinkPHP
是一款经典的国产开源 PHP
开发框架。ThinkPHP
诞生于 2006
年,距今已经有 17
年历史。ThinkPHP
在国内的应用非常广泛,很多知名企业使用了 ThinkPHP
来构建 Web
项目。
早期版本的 ThinkPHP
主要是运行在 PHP-FPM
模式下。为了解决长连接、高并发、阻塞 IO
的问题,ThinkPHP
官方提供了 Think-Swoole
组件,底层全面适配了 Swoole
协程,使得 ThinkPHP
应用可以一键协程化。
GitHub 地址
创建 ThinkPHP 项目
composer create-project topthink/think tp
使用 composer
命令可以快速创建一个 ThinkPHP
新项目。已有项目可跳过此步骤。
引入 Think-Swoole 组件
composer require topthink/think-swoole
启动 HTTP 服务
直接在命令行下启动 HTTP
服务端。
php think swoole
启动完成后,默认会在 0.0.0.0:80
启动一个 HTTP Server
,可以直接访问当前的应用。相关配置参数可以在 config/swoole.php
里面配置(具体参考配置文件内容)。
若本机已安装了Nginx
,可能80
已被占用,可修改config/swoole.php
设置为其他的端口
启动后通过 http://127.0.0.1:9580/
访问程序
热更新
由于 Swoole
服务运行过程中 PHP
文件是常驻内存运行的,这样可以避免重复读取磁盘、重复解释编译,以便达到最高性能。所以更改业务代码后必须手动reload
或者 restart
才能生效。
Think-Swoole
提供了热更新功能,在检测到相关目录的文件有更新后会自动 reload
,从而不需要手动进行 reload
操作,方便开发调试。
如果你的应用开启了调试模式,默认是开启热更新的。原则上,在部署模式下不建议开启文件监控,一方面有性能损耗,另外一方面对文件所做的任何修改都需要确认无误才能进行更新部署。
热更新的默认配置如下:
'hot_update' => [
'enable' => env('APP_DEBUG', false),
'name' => ['*.php'],
'include' => [app_path()],
'exclude' => [],
],
当我们在应用的根目录下定义一个特殊的 .env
环境变量文件,里面设置了 APP_DEBUG=true
会默认开启热更新,你也可以直接把 enable
设置为true
。
连接池
Think-Swoole
实现了数据库连接池功能,包括 MySQL
、Redis
等。
使用连接池要先开启 Swoole
一键协程,需要配置如下参数:
'coroutine' => [
'enable' => true,
'flags' => SWOOLE_HOOK_ALL,
],
连接池配置参数如下:
'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
需要根据自身业务和环境进行适当调整,最大化提高系统负载