对于那些对性能有深入了解的人来说,这只是一个简单的问题。我创建了一个“MySQL”类,每次执行查询时,我都会创建一个新的MySQL对象。见下面PHP/MySQL性能问题
public function get_am_sales() {
$mysql = new MySQL();
$mysql->connect();
$query = "some query";
$mysql->query($query);
$result = $mysql->return_assoc();
unset($mysql);
return $result;
}
public function get_pm_sales() {
$mysql = new MySQL();
$mysql->connect();
$query = "some query";
$mysql->query($query);
$result = $mysql->return_assoc();
unset($mysql);
return $result;
}
public function get_comp_sales() {
$mysql = new MySQL();
$mysql->connect();
$query = "some query";
$mysql->query($query);
$result = $mysql->return_assoc();
unset($mysql);
return $result;
}
$sales = new Sales();
$amSales = $sales->get_am_sales();
$pmSales = $sales->get_pm_sales();
$compSales = $sales->get_comp_sales();
上面的代码很明显的作品,但我想知道如果这是一个性能命中,因为我打开和关闭与每个函数调用的连接。我试图用一个连接来实现这个类,但是我得到错误。见下面
public function connect() {
$this->mysql = new MySQL();
$this->mysql->connect();
}
public function get_am_sales() {
$query = "SELECT site_id, dly_sls AS am_sales, cov_cnt AS am_covers
FROM v_sales_yesterday
WHERE am_pm = 'AM'
GROUP BY site_id
ORDER BY site_id ASC";
$this->mysql->query($query);
$result = $this->mysql->return_assoc();
return $result;
}
public function get_pm_sales() {
$query = "SELECT site_id, dly_sls AS pm_sales, cov_cnt AS pm_covers
FROM v_sales_today
WHERE am_pm = 'PM'
GROUP BY site_id
ORDER BY site_id ASC";
$this->mysql->query($query);
$result = $this->mysql->return_assoc();
return $result;
}
public function get_comp_sales() {
$query = "SELECT business_date, site_id, dly_sls AS comp_sales
FROM v_sales_today_comp
WHERE am_pm = 'PM'
GROUP BY site_id
ORDER BY site_id ASC";
$this->mysql->query($query);
$result = $this->mysql->return_assoc();
return $result;
}
public function disconnect() {
unset($this->mysql);
}
$sales = new Sales();
$sales->connect();
$amSales = $sales->get_am_sales();
$pmSales = $sales->get_pm_sales();
$compSales = $sales->get_comp_sales();
$sales->disconnect();
执行“连接”函数后mysql连接是否关闭?如果认为有必要,那么保持连接打开的最佳方式是什么(使用面向对象的方法)?如果您需要更多的细节,请告诉我,我很感谢您的帮助。
你得到的错误是什么?通常情况下,您不能重新连接。为了防止多重连接,你还应该为你的DB类使用[singleton-pattern](http://php.net/manual/en/language.oop5.patterns.php#language.oop5.patterns.singleton)。 – feeela
我在尝试查询时遇到错误,这导致我认为连接在查询之前关闭。 – Brett
好的,我再问一次:你得到了什么/哪个错误?停止假设,尝试测试或调试。 – feeela