持久连接不适用于 codeIgniter 中的 mysql 驱动程序

2023-11-21

我的本地开发环境中有这个数据库配置

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = ''; //Actual username is put inside these quotes
$db['default']['password'] = '';
$db['default']['database'] = ''; //Actual name of database is put inside quotes
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = APPPATH .'cache';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

当我将其转移到生产服务器时,它不起作用,所以我尝试了很多方法,但有一件事seemed to work是将 dbdriver 更改为mysqli而不是mysql。但我也不得不将 db_debug 设置为 FALSE (所以它“有效”不是正确的说法)

我读过很多关于这个问题的文章,但我还没有在任何地方找到答案。 (我不满意:“更改为 debug = false 并且它会起作用”)

我想看看实际问题是什么,所以我也将本地服务器更改为 mysqli 驱动程序,然后收到错误:

A Database Error Occurred

Unable to connect to your database server using the provided settings.

Filename: C:\Program Files\wamp\www\mellomgarden2\system\database\DB_driver.php

Line Number: 124

经过一番挖掘后,我发现 db_connect() 和 db_pconnect() 的工作方式完全相同:

  1. 如果你查看 system/database/drivers/mysqli/mysqli_driver.php - 看起来像connect() and pconnect()工作方式完全相同,因为pconnect()正在打电话connect()功能。

so $db['default']['pconnect'] = TRUE;使用 mysqli 驱动程序时完全没用。

function db_connect()
{
    if ($this->port != '')
    {
        return @mysqli_connect($this->hostname, $this->username, $this->password, $this->database, $this->port);
    }
    else
    {
        return @mysqli_connect($this->hostname, $this->username, $this->password, $this->database);
    }

}
// --------------------------------------------------------------------

/**
 * Persistent database connection
 *
 * @access  private called by the base class
 * @return  resource
 */
function db_pconnect()
{
    return $this->db_connect();
}

仔细看看上面的 db_connect() 和 db_connect() - 错误被抑制。我删除了返回值的@,然后得到了这个:

严重性:警告

消息:mysqli_connect():(08004/1040):连接太多

文件名:mysqli/mysqli_driver.php

线路编号:76

这是一个更具解释性的错误

所以我的想法是 mysqli 驱动程序的 db_pconnect 应该看起来像这样:

function db_pconnect()
    {       
                 $this->hostname = 'p:' . ltrim($this->hostname, 'p:');                                  
                 return $this->db_connect();
    }

这是 CodeIgniter 开发团队的完全失误还是我错过了什么?


参考你的另一个线程我假设您指定使用持久连接似乎是正确的,但是查看 CodeIgniter 的源代码我们可以得出不同的结论:MySQL 驱动程序实际上注意到这个选项开始设置。而 MySQLi 驱动程序正如您正确分析的那样,事实并非如此。这一点在一篇文章中也有评论错误报告并且已经被修复了。

如你看到的整个 MySQLi 驱动程序类在开发分支中被重写.

因此,到目前为止,您一直在使用持久连接,但在切换到 MySQLi 时(不情愿地)停止使用它们,因为此修复尚未发布...您可以尝试使用开发分支,如果这是一个选项。 (或者只替换这个单个文件......应该也可以。)

正如我在其他答案中所述,您的另一个选择是,您简要估计应用程序使用的连接并调整大小max_connections根据您的实际需要进行限制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

持久连接不适用于 codeIgniter 中的 mysql 驱动程序 的相关文章

  • 在 Zend Framework 中设置视图缩进

    在 Zend Framework 中 可以为 headMeta headLink 等设置缩进 我喜欢这个 我喜欢东西整齐 所以 现在我想在布局 phtml文件 导致视图脚本中的每个新行都用 X 制表符缩进 这是行不通的 有没有办法在 Zen
  • 改变了 (un)serialize() 的行为?

    编辑 问题是现在已记录的 php 错误 https bugs php net bug php id 71617 https bugs php net bug php id 71617感谢您找到那个 Danack 我刚刚将应用程序从 PHPH
  • 在 CodeIgniter、SQL 中调用布尔值的成员函数 result()

    我试图根据搜索关键字查看 data results 中有哪些数据 但每次都会出现上述致命错误 有人可以帮助我吗 我的控制器 public function execute search search term this gt input g
  • XMLHttpRequest() 并输出 csv 文件

    我可以通过向新窗口发出 html 表单 POST 并使用 PHP 响应来成功生成 csv 文件 header Content type text csv header Content Disposition attachment filen
  • PHP静态函数

    我有一个关于 php 中的静态函数的问题 假设我有一堂课 class test public function sayHi echo hi if I do test sayHi 它工作没有问题 class test public stati
  • IOS 向特定用户推送通知?

    是否可以向特定设备发送 iOS 推送通知 我构建了一个论坛类型的应用程序 用户可以创建问题 其他人可以回答它 我需要向提出问题的特定用户发送 iOS 推送通知 通知他们问题已得到解答 这可以通过 PHP 或其他方法来完成吗 是的 您绝对可以
  • JS 中的模板?

    我们都喜欢简单 结构化且易于遵守的代码 我们试图在外观和逻辑之间带来差异 例如 在 PHP 中 我们可以使用模板机制 即创建一个带有 php 标签的 html 格式的文件 该文件使用一些预定义的变量 这些变量可以通过逻辑负责任的脚本来使用
  • WordPress、PHP、URL 编码问题

    Wordpress 提供了一个名为 the permalink 的函数 您猜对了 在帖子循环中返回给定帖子的永久链接 我正在尝试对该永久链接进行 URL 编码 当我执行此代码时 它以 HTML 形式生成以下结果 http
  • Google OAuth 2 PHP 调用用户信息

    我正在尝试使用 Google 的 OAuth2 API 在他们的通用文档中 他们提到了一个名为 UserInfo 的调用 http code google com apis accounts docs OAuth2Login html us
  • 检查 Laravel 模型是否已保存或查询是否已执行

    我见过很多人使用这种方式来检查 Laravel 模型是否已保存 所以现在我想知道这是否是一种安全的方法 我还可以检查下面的查询是否像这样执行 检查模型是否已保存 Eg myModel new User myModel gt firstnam
  • 如何在 Linux 上的 php 中启用 --enable-soap?

    这就是问题所在 我在 Apache 上安装了 PHP 5 2 9 但无法升级 PHP 有没有办法在 PHP 5 2 9 中启用 SOAP PHP 手册中说 要启用 SOAP 支持 请使用 enable soap 配置 PHP 这根本没有帮助
  • date() 和 strtotime 的问题

    这是我所拥有的 str 12 25 2009 echo date Y m d strtotime str 这会产生 1969 12 31 而不是 2009 12 25 如果我将 str var 设置为 01 01 2009 我将得到正确的
  • 更改二维数组每一行中的键而不丢失值

    我有一个行数组 其中一个 视觉 数据列有两个相似但不同的键 我想替换其中一个键 以便该列在所有行中具有相同的键 我的输入数组 Ttitle gt lilly Price gt 1 75 Number gt 3 Title gt rose P
  • Laravel 4 类如何检测它是在 Artisan 任务中运行还是在浏览器请求中运行?

    我有一些应用程序启动代码 需要知道它当前是在 artisan 任务中运行还是在浏览器请求中调用 我如何在 Laravel 4 中检测到这一点 这是最好的方法 if App runningInConsole echo Running in a
  • PHP:注意:定义会话变量的索引未定义

    我正在制作一个带有电子邮件验证器的注册系统 您典型的 使用此代码来验证 类型的事情 我希望存储一个会话变量 以便当人们在注册页面上完成帐户注册并意外导航回该页面时 它会提醒他们需要在使用前激活帐户 使这个问题如此难以诊断的原因是我以类似的方
  • PHP、MySQL 验证故障且搜索不起作用?

    我创建了一个小的注册粘性表格 一切工作正常 但如果我输入任何错误的值 例如姓名中的数字 年龄中的字母甚至错误的电子邮件格式 那么数据仍然保存在数据库中 我无法找出验证问题 另外一个是搜索选项 每当我在搜索框中输入任何名字或姓氏时 它都应该显
  • 构建、部署、配置和回滚所需的 Jenkins 指南,保留 5 个版本

    我对詹金斯很陌生 有一定的了解 但需要进一步的指导 我在 Git 存储库上有一个 PHP 应用程序 它使用 Composer 具有资产 具有用户上传的媒体文件 使用 Memcache Redis 具有一些代理 工作人员 并且具有迁移文件 到
  • 是否可以倒回 PDO 结果?

    我正在尝试为 PDO 语句的结果编写一个迭代器 但找不到任何回退到第一行的方法 我想避免调用 fetchAll 和存储所有结果数据的开销 first loop works fine foreach statement as result d
  • 特殊字符和 URL 重写

    我目前正在开发一个应用程序 该应用程序从暴雪社区 API 中提取 JSON 数据并使用 PHP 对其进行解析 一切正常 直到我遇到一个名字中有特殊字符的角色 为了提取角色数据 我需要知道他们的角色名称和他们所在的领域 我将名称和领域通过 U
  • cURL 错误 28:5001 毫秒后解析超时

    我使用 WordPress 最近将我的网站从 cpanel 主机移动到带有 directadmin 面板的 Linux 服务器 转账后立即发现客户在通过EDD插件下载时出现以下错误 cURL 错误 28 5001 毫秒后解析超时 我也遇到了

随机推荐

  • 如何使用 Doctrine 2 中的 QueryBuilder 创建带有 SELECT 子查询的 LEFT JOIN?

    我需要限制 LEFT JOIN 结果 所以我必须使用子查询 有人可以给我一些建议 我该如何使用 Doctrine 2 来做到这一点吗 我现在拥有的是 qb this gt em gt createQueryBuilder return qb
  • 有什么方法可以防止损坏角度组件吗?

    我们知道 Angular 中有一个方法 ngOnDestroy 它在销毁组件时运行 但我想知道有什么方法可以防止它被销毁吗 The 可以停用Guard 可以访问活动组件的实例 因此您可以实现已更改 检查是否有更改 并在离开前有条件地要求用户
  • Django:如何向表单上的输入字段添加任意 html 属性?

    我有一个使用模板呈现的输入字段 如下所示 div class field form city div 其呈现为 div class field div
  • PHP:在本地主机中发送邮件

    我想通过本地托管的 php 代码发送电子邮件 当我运行此代码时 出现以下错误 Warning mail a href function mail function mail a Failed to connect to mailserver
  • PostgreSQL:如何优化数据库以存储和查询巨大的图表

    我在配备 1GB RAM 和 Mac OS X 10 5 8 的 1 83 GHz Intel Core Duo Mac Mini 上运行 PostgreSQL 8 3 我的 PostgreSQL 数据库中存储了一个巨大的图表 它由 160
  • 如何解决 python 中的未来警告 -> % (min_groups, self.n_splits)), warning) ?

    当我在程序中运行mean acc 方法时 出现 min groups self n splits 警告 错误 def mean acc models RandomForestClassifier n estimators 200 max d
  • 相机 ISO 设置/快门速度

    我正在寻找一种方法来改变我的 Evo 4G 相机的感光度 我知道这不是相机的快门速度 因为它是数码相机 下一个最相关的方面是 ISO 设置 但 Android SDK 没有办法操作它 有人知道另一种选择吗 即场景模式 曝光或效果 param
  • 如何将UTF8字符串转换为字节数组?

    The charCodeAt函数返回字符的 unicode 代码 但我想获取字节数组 我知道 如果字符码超过 127 则该字符存储在两个或更多字节中 var arr for var i 0 i
  • 为什么 VBA 中的每个类都有一个 Application 属性?

    我想澄清一下为什么每堂课 或几乎每个班级 在 VBA 中 当您滚动浏览对象浏览器时 有一个Application财产 MSDN 说 当不带对象限定符使用时 此属性返回一个 代表 Microsoft Excel 应用程序的应用程序对象 当与对
  • url重写后如何知道原来的url?

    我有 url 重写规则 将 www domain2 com 重定向到 domain1 com 根目录下的子文件夹 我们将此文件夹称为子项目 在我的控制器中 我需要构造一个指向原始未修改路径的 URL 但 Request Url 属性 如 A
  • 如何回滚特定迁移?

    我有迁移文件 db migrate 20100905201547 create blocks rb 我如何具体回滚该迁移文件 rake db rollback STEP 1 如果您要回滚的迁移是最后应用的迁移 这是一种执行此操作的方法 您可
  • 在不同端口上启动瘦服务器

    我是个新手哦 我有一个 ruby on Rails 应用程序 今天我可以通过命令正常启动应用程序 sudo thin start d 我们创建了一个新的测试数据库 一个是干净的数据库 另一个用于测试 因此可能会弄乱 在database ym
  • 使用seaborn clustermap提取层次聚类中的簇行

    我正在使用seaborn clustermap 中的分层聚类来对我的数据进行聚类 这可以很好地可视化热图中的集群 但是 现在我想提取分配给不同集群的所有行值 这是我的数据的样子 import pandas as pd load DataFr
  • 有没有比 fread() 更快的方法来读取大数据?

    嗨 首先我已经在堆栈和谷歌上搜索并找到了这样的帖子 快速读取非常大的表作为数据框 虽然这些很有帮助并且得到了很好的回答 但我正在寻找更多信息 我正在寻找读取 导入高达 50 60GB 的 大 数据的最佳方法 我目前正在使用fread 函数来
  • Qt如何更改特定QComboBox项目的突出显示颜色

    我正在尝试使 QComboBox 的突出显示透明 此 QComboBox 的颜色也会根据所选索引而变化 这是迄今为止我最好的解决方案 switch comboBox gt currentIndex case 0 comboBox gt se
  • 将两个内联块左右对齐在同一行上

    如何对齐两个内联块 使一个位于左侧 另一个位于同一行的右侧 为什么这么难 有没有像 LaTeX 的 hfill 这样的东西可以消耗它们之间的空间来实现这一点 我不想使用浮动因为使用内联块我可以排列基线 当窗口对于它们两个来说都太小时 使用内
  • 没有这样的文件来加载 Rails 3 的捆绑程序错误

    我有一个 Rails 3 应用程序可供部署 我还没有设置 VPS 主机 因为我计划在前几个月将所有内容都放在共享主机上 Problem cd myapp 捆绑检查 结果 The Gemfile s dependencies are sati
  • 将 HDD Serial # VB6 代码转换为 VB.NET 代码

    我从 VC 项目中获取了一段很酷的代码 它无需使用 WMI 即可获取硬盘驱动器的完整信息 因为 WMI 有其自身的问题 我请求那些熟悉 API 函数的人尝试将这个 VB6 代码转换为 VB NET 或 C 并帮助很多非常需要这个实用程序类的
  • 如何从 CLI 解释器准备语句?

    如何从 SQLite CLI 准备一条语句 我已经找到页面了编译 SQL 语句但它更适合 ODBC 接口 而不是 CLI 解释器 我希望得到类似于以下内容的东西 sqlite gt pq prepare SELECT FROM Users
  • 持久连接不适用于 codeIgniter 中的 mysql 驱动程序

    我的本地开发环境中有这个数据库配置 db default hostname localhost db default username Actual username is put inside these quotes db defaul