Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

程序每次执行$discuz->init()都会重新初始化一遍,单例没有起到作用。

[复制链接]
蓝鲸鱼 发表于 2012-9-12 20:22:26 | 显示全部楼层 |阅读模式
本帖最后由 蓝鲸鱼 于 2012-9-12 20:38 编辑

插件里如果仅仅是页面单纯的取数据要怎么做呢?不去初始化那些session和其他,否则每次页面每隔几秒取一次数据还运行那么多太伤了。。

请问为什么discuz每次初始化的时候都重新初始化,而不是单例呢。

$discuz->init();  我的插件每次执行plugin.php 里面的时候会执行$discuz->init(); 这是任何文件都会执行到的代码。。

然后初始化的代码是这样的:
public function init() {
        if(!$this->initated) {
            $this->_init_db();
            $this->_init_setting();
            $this->_init_user();
            $this->_init_session();
            $this->_init_mobile();
            $this->_init_cron();
            $this->_init_misc();
        }
        $this->initated = true;
    }

到这里每次$this->initated都会是false,也就是说每次都会执行这些代码
$this->_init_db();
            $this->_init_setting();
            $this->_init_user();
            $this->_init_session();
            $this->_init_mobile();
            $this->_init_cron();
            $this->_init_misc();
我写的插件需要没五秒刷新一块区域,这个区域会自动的取数据,类似聊天室那种

但是每次取数据都会执行一遍
$this->_init_db();
            $this->_init_setting();
            $this->_init_user();
            $this->_init_session();
            $this->_init_mobile();
            $this->_init_cron();
            $this->_init_misc();
这里面有很多数据库操作,比如 $this->_init_session();  就会执行C::t('common_member_status')->update($this->var['uid'], array('lastip' => $this->var['clientip'], 'lastvisit' => TIMESTAMP));
我根本不需要执行这条语句。所以导致我的程序sql记录成千上万的这条语句,当然还有其他语句。人多的时候一秒内会执行很多次。
每个登录用户其实已经初始化了。可为什么还会执行。。。。。

每次取数据都会把这些执行一遍。。。。晕死
SELECT * FROM pre_common_session WHERE `sid`='6pPRLJ'
UPDATE  pre_common_member_status SET `lastip`='xxx' , `lastvisit`='xxx' WHERE `uid`='xxx'
SELECT * FROM pre_common_credit_rule_log WHERE uid=xxxAND rid=xxx
SELECT COUNT(*) FROM pre_common_statuser WHERE `uid`='xxx' AND `daytime`='xxx' AND `type`='login'


516870 发表于 2012-9-12 20:44:38 | 显示全部楼层
深奥。。。看不懂什么回事
回复

使用道具 举报

mark35 发表于 2012-9-13 00:41:46 来自手机 | 显示全部楼层
核心缺乏一个延迟更新死区机制。我在7.2上实现了,对性能提升相当好。X2更复杂,提升会更大
回复

使用道具 举报

无效楼层,该帖已经被删除
m.king 发表于 2012-9-14 16:14:00 | 显示全部楼层
问题已经收到,稍后我们再核查下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-2-28 12:03 , Processed in 0.027907 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表