用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2343|回复: 5
收起左侧

[已解决] 为何一加载database类,响应速度变慢许多

[复制链接]
发表于 2016-9-17 20:27:01 | 显示全部楼层 |阅读模式
本帖最后由 fzzlee2k 于 2016-9-18 20:25 编辑

    小弟初学框架,  选择了CI, 现遇到一些麻烦, 需要指导.

    目前正用CI开发一ERP系统, 越写越发现速度极慢, 一开始以为是整合smarty的后果.
    如下图
(响应速度>24s)

    后我下载了CI的3.0.6.1原始文件进行测试, 发现, 只要向config中的autoload.php文件, 添加自动加载database, 页面响应速度就会下降. 请问是否正常?

未加载database前: Page rendered in 0.0425 seconds. CodeIgniter Version 3.0.6
加载database之后:
Page rendered in 1.0991 seconds. CodeIgniter Version 3.0.6
------------------------------------------------
PHP复制代码
 
$autoload['libraries'] = array('database');
 
复制代码


 楼主| 发表于 2016-9-18 20:24:48 | 显示全部楼层
问题已解决. 原因在于PHP5.3版本的改动.
以下是原因与解决方法, 給之后学习的同学们. 不要再掉入这个坑...

---------------------------------------------------------
响应时间过长的原因便在于PHP 5.3连接数据库的方式有所改变。目前我们配置数据库信息时都类似这样的“$dbhost=‘localhost’ ”;这本身是没有问题的,只是PHP 5.3会考虑是IPv4还是IPv6,面对localhost会犹豫,因此出现响应时间过长的情况。如果你查看过服务器处理PHP的时间,你会发现处理PHP的时间很短,等待处理前的时间很长。

目前这种响应时间过长的情况只出现在IIS 7及IIS 7.5升级PHP 5.3系列版本后,至于数据库版本是多少没多大影响。

方法一:上面已经说到,这是因为PHP 5.3在面对数据库配置信息中的“localhost”会犹豫,因此在安装网站的时候直接把数据库服务器地址改名为“127.0.0.1”.

方法二:打开“%systemroot%\System32\drivers\etc\hosts”这个文件,”# 127.0.0.1       localhost” ,把前面的# 去掉, 也就是取消注释.这样连接数据库的时候,填写localhost  就会自动识别成127.0.0.1了.

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

 楼主| 发表于 2016-9-17 20:29:44 | 显示全部楼层
如果修改一下控制器目录下的Welcome.php文件, 页面响应速度又要翻倍
Page rendered in 2.1530 seconds. CodeIgniter Version 3.0.6
PHP复制代码
        public function index()
        {
                $this->db = $this->load->database('default',TRUE);
                $query = $this->db->query('SELECT id FROM db_sys_udpage');
 
                $this->load->view('welcome_message');
        }
复制代码
 楼主| 发表于 2016-9-17 21:03:13 | 显示全部楼层
现找到原因了, 配置环境问题, 但问题根源还在研究中.
出问题的配置是

    服务器: 127.0.0.1 via TCP/IP
    服务器版本: 5.5.15-log
    协议版本: 10
    用户: root@localhost
    MySQL 字符集: UTF-8 Unicode (utf8)

    Apache/2.2.19 (Win32) PHP/5.3.8
    MySQL 客户端版本: mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $
    PHP 扩展: mysqli


正常的配置环境是:

    服务器: localhost via TCP/IP
    服务器版本: 5.1.30-community
    Protocol version: 10
    用户: root@localhost
    MySQL 字符集: UTF-8 Unicode (utf8)

    Apache/2.2.11 (Win32) PHP/5.2.8
    MySQL client version: 5.0.51a
    PHP extension: mysqli



---------------------------------------------------
致于为什么我不直接选择后者, 好像是因为CI3对PHP和mysql的版本有作要求...
 楼主| 发表于 2016-9-18 18:45:27 | 显示全部楼层
现发现, 同样的Apache和MYSQL版本下, PHP5.2和PHP5.3或5.4有数十秒的响应速度差距... 到底是为啥子, 是否有高手可以解释  @hex

本版积分规则