簡體   English   中英

CodeIgniter隨機PHP致命錯誤:在... mysqli_driver.php中的非對象上調用成員函數。

[英]CodeIgniter Random PHP Fatal error: Call to a member function … on a non-object in … mysqli_driver.php

我發現有很多貼子與此相似,但都不相同。 我有一個使用率很高的CodeIgniter應用程序,每天可能有幾十個完全隨機的致命錯誤記錄到錯誤日志中。

PHP致命錯誤:在/system/database/drivers/mysqli/mysqli_driver.php中的非對象上調用成員函數real_escape_string()

要么

PHP致命錯誤:在/system/database/drivers/mysqli/mysqli_driver.php中的非對象上調用成員函數query()

成員函數是隨機的。 Row(),Query(),real_escape_string(),num_rows()等。

我在mysqli_driver.php中添加了一個日志函數,該函數會在接收到非對象時轉儲堆棧跟蹤:

if(!is_object($this->conn_id))
// Dump stack

這告訴我錯誤是在應用程序中的隨機位置發生的,因此我假設問題不在我的代碼中。 剩下的就是我的服務器配置。 我找不到任何吸煙槍,也無法重現該錯誤。

我在這里抓稻草。 誰能提供關於我可以采取哪些其他措施的想法?

  • CodeIgniter v3.x
  • 阿帕奇/ 2.2.15
  • CentOS的6
  • MySQL 5.1.73

更新:這是我使用的配置。 主數據庫連接:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'cfMaster',
    'password' => 'somemasterpw',
    'database' => 'cfMaster',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => FALSE
);

連接到備用數據庫時:

// $userDb array contains all of the connection details.
$firmDb = array( "firm_id" => $userDb[0]->firm_id, 
"hostname" => $userDb[0]->hostname, 
"username" => $userDb[0]->username, 
"password" => $userDb[0]->password, 
"database" => $userDb[0]->database, 
"dbdriver" => "mysqli", 
"pconnect" => FALSE );
$this->db = $this->load->database($firmDb, TRUE, TRUE);

每小時約35K個連接。 每天約20次失敗。 實際上,我所有的數據庫連接在99.99%的時間內都可以正常工作。 發現0.01%的失敗是我的問題。

“非對象”表示變量($ db)不引用對象。 您是否將其分配給數據庫類(例如,$ db = new databaseClass();或您正在使用的類的任何名稱)?

更換

$var = &new class(); with $var = new class();

它會工作

嘗試在您的方法上加載數據庫並嘗試

function __construct(){
    parent::__construct();
    $this->load->database();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM