2016-05-07 16:49:11 4858次浏览 3条回答 0 悬赏 20 金钱

QQ20160507-0.png
数据库是导入自带的,

$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
    return $this->render('/site/about');
} else {
    Yii::$app->jump->error($model->errors, Url::to('@web/oem'));
}

部分日志

13	16:28:33.230	info	yii\db\Command::query	SELECT
    kcu.constraint_name,
    kcu.column_name,
    kcu.referenced_table_name,
    kcu.referenced_column_name
    FROM information_schema.referential_constraints AS rc
    JOIN information_schema.key_column_usage AS kcu ON
    (
        kcu.constraint_catalog = rc.constraint_catalog OR
        (kcu.constraint_catalog IS NULL AND rc.constraint_catalog IS NULL)
    ) AND
    kcu.constraint_schema = rc.constraint_schema AND
    kcu.constraint_name = rc.constraint_name
    WHERE rc.constraint_schema = database() AND kcu.table_schema = database()
    AND rc.table_name = 'user' AND kcu.table_name = 'user'
    /Applications/MAMP/htdocs/yii-advanced/common/models/User.php (82)
    /Applications/MAMP/htdocs/yii-advanced/common/models/LoginForm.php (73)
    /Applications/MAMP/htdocs/yii-advanced/common/models/LoginForm.php (44)

14	16:28:35.921	info	yii\web\Session::open	Session started
    /Applications/MAMP/htdocs/yii-advanced/common/models/LoginForm.php (59)
    /Applications/MAMP/htdocs/yii-advanced/frontend/controllers/IndexController.php (47)
15	16:28:35.925	info	yii\web\User::login	User '2' logged in from ::1 with duration 2592000.
    /Applications/MAMP/htdocs/yii-advanced/common/models/LoginForm.php (59)
    /Applications/MAMP/htdocs/yii-advanced/frontend/controllers/IndexController.php (47)

注意时间,日志13花了2秒多,是查了元数据?为什么要查?为什么这么慢?

  • 回答于 2016-05-09 09:38 举报

    我这里0.01秒,或许是你的运行环境有待优化

    1 条回复
    回复于 2016-05-09 10:09 回复

    我自己写的其它项目都没有问题,就yii2高级版会,换了台电脑也是

  • 回答于 2016-05-09 10:09 举报

    是不是表很大呢?

    8 条回复
    回复于 2016-05-09 10:10 回复

    这个是mysql自带的表,看了下才230行

    回复于 2016-05-09 14:31 回复

    如果直接写固定的帐号密码不查询数据库呢?

    回复于 2016-05-10 08:29 回复

    我认为就不会这么长时间了,因为如果输错账号密码就很快,错的时候看日志就没有查这个什么元数据

    回复于 2016-05-10 09:51 回复

    输错密码就很快的话,因为你也是要查询数据库才能校验密码的,所以应该不是数据库的问题。那么应该是登录的用户模块的问题了,你是用apache还是nginx呢?如果是windows的话,是用wamp吗?wamp有个可以webGrind可以查看具体加载项,你可以从那里看看具体调用了哪一些东西,或许会对你有帮助。
    By.Richard

    回复于 2016-05-10 15:25 回复

    输错的时候我看了日志,是因为没有搜索information_schema这个表,但是不知道为什么登陆成功要搜索一遍这个表,另外是我mac。

    回复于 2016-05-10 19:24 回复

    1.information schema 是mysql系统用的所有字典信息,包括数据库系统有什么库,有什么表,有什么字典,有什么存储过程等所有对象信息和进程访问、状态信息。 一旦删除该数据库系统将无法使用。MAMP吗?

    回复于 2016-05-11 16:14 回复

    是这个MAMP PRO

    回复于 2016-05-11 16:43 回复

    可以试一下把Yii框架的db缓存打开

  • 回答于 2018-02-11 00:25 举报

    配置文件中

    'db'=>[
        'enableSchemaCache'=>true,
    ],
    
您需要登录后才可以回答。登录 | 立即注册
xihrni
主管

xihrni

注册时间:2014-11-24
最后登录:2021-03-30
在线时长:10小时26分
  • 粉丝4
  • 金钱455
  • 威望0
  • 积分555

热门问题