由于Swoole服务运行过程中PHP文件是常驻内存运行的,这样可以避免重复读取磁盘、重复解释编译PHP,以便达到最高性能。所以更改业务代码后必须手动reload或者restart才能生效。
think-swoole扩展提供了热更新功能,在检测到相关目录的文件有更新后会自动reload,从而不需要手动进行reload操作,方便开发调试。
如果你的应用开启了调试模式,默认是开启热更新的。原则上,在部署模式下不建议开启文件监控,一方面有性能损耗,另外一方面对文件所做的任何修改都需要确认无误才能进行更新部署。
配置文件在app 下面的swoole.php enable 参数
如果想读配置文件就是修改
当我们在应用的根目录下定义一个特殊的.env环境变量文件,里面设置了APP_DEBUG = true会默认开启热更新,你也可以直接把enable设置为true。
就是有个根目录文件是.example.env 改成 .env 就会读这里面的配置
热更新的理解就是swoole会把第一次的文件放在缓存中,往后就会读缓存,如果有更改要先停止swoole再开启,而热更新是每次都重新读取,建议在调试中开启,在正式关闭,这样快。
swoole.php 下面的include参数是 只会热更新的目录,如果想加别的,需要再加。默认是app目录
参数 说明
enable 是否开启热更新
name 简单点说就是监控那些类型的文件变动
include 简单点说就是监控那些路径下的文件变动
exclude 排除目录
由于众所周知的原因,国外的网站连接速度很慢。因此安装的时间可能会比较长,我们建议使用国内镜像(阿里云)
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
剩下的看手册
1.单应用模式下想使用多模块的使用(多应用)
1.先修改配置文件
public下面的.htaccess文件
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
##RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 注释这个下面加上
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
之后cd根目录
php think make:controller admin/Index
这个就是建一个admin下面的index控制器
访问路径是 http://127.0.0.1/tp/public/admin.index/index
php think make:controller index/Index
这个就是建一个index(应用)下面的index控制器
访问路径是 http://127.0.0.1/tp/public/index.index/index
这样就有前后台了 正常情况下还有个api应用
php think make:controller api/Index
访问路径 : http://域名/应用/控制器/方法/参数/值/参数值?参数=值&参数=值
如果要使用多应用模式,你需要安装多应用模式扩展think-multi-app。
composer require topthink/think-multi-app
之后删除app/下面的controller目录
cd 项目根目录
php think make:controller admin@Index
php think make:controller home@Index
php think make:controller common@Admin
php think make:controller common@Home
php think make:controller 应用名@控制器 多应用
php think make:controller home@User
访问的路径是 http://127.0.0.1/tp/public/home/user/index
访问路径 http://域名/应用/控制器/方法/参数/值/参数值?参数=值&参数=值
1.在想使用路由的应用下新建route目录
2.在route目录下新建route.php
例:在admin应用下建路由
/app/admin/新建route目录
route目录下新建route.php
访问地址是 http://127.0.0.1/tp/public/admin/arcadd
访问地址http://域名/应用名/arcadd
#在多应用的情况下是不能省去应用名的 (如果说想多应用下不显示应用名可使用域名绑定 --- 请查看域名绑定)
根目录下的config/app.php
// 应用映射(自动多应用模式有效) 访问adminxx到admin应用
'app_map' => [
// '自定义名称' => '真实应用名'
'adminxx' => 'admin'
],
访问地址 http://127.0.0.1/tp/public/adminxx/arcadd
这样的话就只能用adminxx访问不能直接用admin访问
如果说想多应用下不显示应用名可使用域名绑定
根目录下的config/app.php
// 域名绑定(自动多应用模式有效)
'domain_bind' => [
// 绑定的域名 指向的应用
‘aa.test.com’ => 'admin'
],
访问路径 http://aa.test.com/ 这样就是访问到admin应用下
访问路径 http://aa.test.com/控制器/方法
自动多应用路由不用输入admin 直接就是http://aa.test.com/arcadd
根目录下面 .example.env 改成 .env 就会走这个配置文件 里面debug默认是开启的