webman2.0+thinkorm ,怎么缓存表结构,避免出现 SHOW FULL COLUMNS

chenliangwei

问题描述

这里写问题描述
webman2.0+thinkorm
数据查询会出现 SHOW FULL COLUMNS

1、在 runtime/schema 目录下没有生成 表结构缓存
2、php windows.php 启动后
第一次执行查询 就会出现两次 SHOW FULL COLUMNS
第二次执行查询,不会出现
3、ctrl+c,然后 php windows.php 启动后 ,又会出现2次 SHOW FULL COLUMNS

//config/think-orm.php 部分配置如下
'fields_strict'=>true,
'fields_cache' => true, // 字段缓存,避免查询 SHOW FULL COLUMNS FROM
'auto_timestamp' => true, // 禁用自动时间戳(可选)
'schema_cache_path' => runtime_path('schema'), // 如果有缓存路径需要设置

controller/AdminController.php 查询代码如下
$list = Admin::with(['adminRoles.role'])->where(formatWhere($where))
            ->order('id', 'desc')
            ->paginate(['list_rows' => $limit, 'page' => $page]);

//model/Admin.php 部分代码如下
<?php
namespace app\skmanage\model;

use think\Model;

class Admin extends Model
{
    protected $table = 'xxxx';
    protected $autoWriteTimestamp = false;
    protected $createTime = 'created_at';
    protected $updateTime = 'updated_at';

    // 隐藏密码字段
    protected $hidden = ['password'];

    // 多对多:用户-角色
    public function adminRoles()
    {
        return $this->hasMany(AdminRole::class,  'user_id', 'role_id');
    }

//model/AdminRole.php 部分代码如下
public function role()
    {
        return $this->belongsTo(Role::class,  'role_id','role_id');
    }
225 1 1
1个回答

walkor 打赏

这个是tp内置的机制,webman是常驻内存的,所以同一个进程它只是在开始时会有这个 SHOW FULL COLUMNS, 后面就不会有了,不影响性能。 如果是运行在fpm的传统醒目,则每个请求都会有 SHOW FULL COLUMNS,对性能影响很大。

  • 暂无评论
🔝