sql-server – sqlsrv驱动措施在codeigniter中速率慢?
我已经安装了最新版本的CI 2.1.3 此刻运行查询后,我的相应时刻很是慢,很是简朴,譬喻: function Bash(){ $sql = “SELECT * FROM Contacts”; $stmt = sqlsrv_query( $conn,$sql ); if( $stmt === false) { die( print_r( sqlsrv_errors(),true) ); } 查询长途数据库后. (Sql server 2008) 当我在一个简朴的PHP剧本中针对统一个长途数据库运行沟通的查询时.我立即获得了功效. a)有没有其他人在codeigniter中行使sqlsrv驱动措施碰着此题目? 假如是这样,你是怎样办理的? 这是我的毗连字符串: $db['default']['hostname'] = "xxxxx,1433"; $db['default']['username'] = "xx"; $db['default']['password'] = "xxxxxx-xx"; $db['default']['database'] = "xxxxxxxxx"; $db['default']['dbdriver'] = "sqlsrv"; $db['default']['dbprefix'] = ''; $db['default']['pconnect'] = TRUE; $db['default']['db_debug'] = TRUE; $db['default']['cache_on'] = TRUE; $db['default']['cachedir'] = ''; $db['default']['char_set'] = 'utf8'; $db['default']['dbcollat'] = 'utf8_general_ci'; $db['default']['swap_pre'] = ''; $db['default']['autoinit'] = TRUE; $db['default']['stricton'] = FALSE; 更新: 我在运行探查器时发明白以下内容. 数据库:数据库查询:1(潜匿) 加载时刻:根基类0.0428 好像查询在0.06秒内执行,但节制器花了一分钟加载. 不知道为什么会这样. 解 最新的SQLSRV驱动措施的勾当记录接口是错误的. 因此,下载并包围现有界面(包围CI中数据库文件夹中的sqlsrv文件夹): http://www.kaweb.co.uk/blog/mssql-server-2005-and-codeigniter/ 留意:这些已颠末SQL Azure测试而且有用. $查询 – > NUM_ROWS();不合用于这些驱动措施,以是我提议你行使count取代.可能建设本身的包装器. 另外,date此刻是功效齐集的日期工具范例. 我但愿这有辅佐. 办理方案2 假如因为某种缘故起因你发明白一个让它完全无法行使的错误.规复到最初提供的sqlsrv接口.你会发明导致题目的缘故起因是原始接口执行查询的方法,因此,建设一个数据库助手类;行使$sql = $this-> db-> last_query();获取您要执行的查询,然后在database_helper类中本身执行: function MakeDbCall ($sql) { $serverName = "xxxxx-xxxx-xxx,1433"; //serverNameinstanceName $connectionInfo = array( "Database"=>"xxx","UID"=>"xx","PWD"=>"xxxxx","ConnectionPooling" => "1"); $conn = sqlsrv_connect($serverName,$connectionInfo); $stmt = sqlsrv_query($conn,$sql); while( $row = sqlsrv_fetch_array( $stmt,SQLSRV_FETCH_ASSOC) ) { $result_array[] = $row; } return $result_array; } 为row_array建设一个. 您应该可以从应用中的任何位置直接挪用此成果.同时操作active_records构建查询的方法. 不是一个抱负的办理方案,可是在codeigniter对它们的SQLSRV类举办排序之前,我们无法做许多工作. 办理要领在谜底已被接管后添加谜底,由于我找到了差异的办理方案.我碰着了同样的题目…轮回功效集很是慢.我打开了system / database / drivers / sqlsrv / sqlsrv_driver.php并找到了毗连成果.我留意到这是行使SQLSRV_CURSOR_STATIC选项.我将其变动为SQLSRV_CURSOR_CLIENT_BUFFERED,我的慢速题目消散了.请参阅此处的文档:http://msdn.microsoft.com/en-us/library/hh487160(v=sql.105).aspx 我诚恳说不知道php的sql server驱动措施是做什么的,可是,思量到加快等,我可以揣摩驱动措施也许默认行使游标.这好像是个糟糕的主意.我也假设通过选择client_buffered,查询的数据将在没有光标的环境下读取并在客户端的内存中会见,就像它是一个游标一样.假如是这种环境,假如您实行执行具有很多行要读取的查询,则也许会产生错误.大概另一个选项(SQLSRV_CURSOR_FORWARD?)可用于在没有游标的环境下读取数据 – 但我确名誉于会见查询的要领将越发有限(譬喻,不行使result_array()) -Don (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |