对于我的一个 Android 应用程序,我遇到了基于 PHP/Mysql 的 Web 服务 API 的问题。这是问题描述。
我在错误日志中收到以下错误。
用户my-db-user已经有超过'max_user_connections' 的活动连接
我的代码用完了mysql database connections
,我已经达到了我的主机可以提供的最大限制。我不能再增加max_connections
了max_user_connections
。
这是我在 PHP 脚本中编写数据库访问的方法。我到处都遵循这种模式,因此在所有数据库访问类及其方法(如获取、插入、更新、删除等)中都是相同的。
数据库助手.php
<?php
class DatabaseHelper {
private $db_host = 'my-host';
private $db_user = 'my-db-user';
private $db_password = 'my-password';
private $db_name = 'my-db-name';
public function getConnection() {
try {
$con = new mysqli($this->db_host, $this->db_user, $this->db_password, $this->db_name);
return $con;
} catch (Exception $ex) {
error_log('DB Error --> ' . $ex);
return null;
}
}
}
?>
这是我如何使用它的数据库访问类。
<?php
require_once (dirname(__FILE__) . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "pathtofile" . DIRECTORY_SEPARATOR . 'DatabaseHelper.php');
class SomeDao {
public function get() {
$result = array();
$database = new DatabaseHelper();
$mysqli = $database->getConnection();
if ($mysqli != null) {
$stmt = $mysqli->stmt_init();
if ($stmt->prepare("SELECT columns FROM some_table")) {
$status = $stmt->execute();
if ($status) {
$stmt->bind_result($columns);
$records = array();
while ($stmt->fetch()) {
// build record array
$record = array();
// add key value pairs to array
$record["columns"] = $columns;
// add $record to $records
array_push($records, $record);
}
$result["statusCode"] = Constants::$OK;
$result["statusMessage"] = "OK";
$result["records"] = $records;
} else {
$result["statusCode"] = Constants::$SYSTEM_ERROR;
$result["statusMessage"] = "System Error." . $mysqli->error;
}
@$stmt->close();
} else {
$result["statusCode"] = Constants::$SYSTEM_ERROR;
$result["statusMessage"] = "System Error." . $mysqli->error;
}
@$mysqli->close();
} else {
$result["statusCode"] = Constants::$SYSTEM_ERROR;
$result["statusMessage"] = "System Error.";
}
return $result;
}
}
?>
我相信会有很多像我一样的人会遇到这个问题并成功解决它。必须有一些方法来优化使用,mysql db connections
我想知道我该怎么做。我只需要我可以用来克服这个问题的最佳方法。
希望我已经清楚地说明了我的问题。请帮忙。
问候