Php 内存泄漏或连接未关闭
我有三个文件index.php,DB_函数,DB_Connect通过mysql服务器连接。但响应非常慢,根据托管服务器人员的说法,任务几乎正在运行 index.php DB_Function.phpPhp 内存泄漏或连接未关闭,php,mysql,database,Php,Mysql,Database,我有三个文件index.php,DB_函数,DB_Connect通过mysql服务器连接。但响应非常慢,根据托管服务器人员的说法,任务几乎正在运行 index.php DB_Function.php 以下是我的建议 1.-检索数据后始终关闭连接 2.-如果您希望这样的查询只有一行 "SELECT * FROM userDetails WHERE email = '$email' AND password = '$password' 您应该在查询末尾添加LIMIT 1,以检索唯一可能的行 3
以下是我的建议
1.-检索数据后始终关闭连接
2.-如果您希望这样的查询只有一行
"SELECT * FROM userDetails WHERE email = '$email' AND password = '$password'
您应该在查询末尾添加LIMIT 1
,以检索唯一可能的行
3.-向表中添加索引
4.-使用mysqlslap测试您的性能您是否正在调用DB_Connect::close();有吗?没有,我应该在DB_函数析构函数中使用它吗?hm PHP通常应该在脚本结束时关闭连接,即使没有交互。你能发布你的实际查询吗$db->getUserByEmailAndPassword($email,$password);和$db->getUserByuserid($uservalue);我已经更新了代码请检查您应该检查表userDetails
是否在email
上有索引,以及carrieinfo
是否在userid
上有索引。如果不是,mysql必须在每次进行查询时读取整个数据库。此外,您可能希望使用哈希函数保存密码。
<?php
class DB_Functions {
private $db;
//put your code here
// constructor
function __construct() {
require_once 'DB_Connect.php';
// connecting to database
$this->db = new DB_Connect();
$this->db->connect();
}
// destructor
function __destruct() {
}
/**
* Get user by email and password
*/
public function getUserByEmailAndPassword($email, $password) {
$result = mysql_query("SELECT * FROM userDetails WHERE email = '$email' AND password = '$password'") or die(mysql_error());
// check for result
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
$result = mysql_fetch_array($result);
return $result;
} else {
// user not found
return false;
}
}
/**
* Get user by email and password
*/
public function getUserByuserid($uservalue) {
$result = mysql_query("SELECT * FROM CalorieInfo WHERE userid= '$uservalue' ") or die(mysql_error());
// check for result
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
$result = mysql_fetch_array($result);
return $result;
} else {
$calresult = mysql_query("INSERT INTO CalorieInfo( userid,startdate, createddate, updateddate,createdby,updatedby) VALUES('$uservalue' ,NOW(), NOW(), NOW(),'$uservalue','$uservalue')");
if ($calresult) {
$id = mysql_insert_id();
$calresult = mysql_query("SELECT * FROM CalorieInfo WHERE id = $id");
return mysql_fetch_array($calresult);
}else{
// user not found
return false;
}
}
}
?>
<?php
class DB_Connect {
// constructor
function __construct() {
//this->connect();
}
// destructor
function __destruct() {
//closing db
}
// Connecting to database
public function connect() {
require_once 'config.php';
// connecting to mysql
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
// selecting database
mysql_select_db(DB_DATABASE) or die(mysql_error());
// return database handler
return $con;
}
// Closing database connection
public function close() {
mysql_close();
}
}
?>
"SELECT * FROM userDetails WHERE email = '$email' AND password = '$password'