php pdo 时间,php – 使用PDO执行时间记录查询 – 自动完成功能无效
我正在嘗試創(chuàng)建一個(gè)中間類,它將在數(shù)組中記錄查詢及其執(zhí)行時(shí)間.一切都很好,它完美無缺.但是當(dāng)我嘗試訪問中間類時(shí),自動(dòng)完成功能不起作用.如何讓自動(dòng)完成工作.我正在使用Netbeans.
中級(jí)類名是Model.
從我的應(yīng)用程序中,我有一個(gè)名為Users的類,它擴(kuò)展了Model.
class Users extends Model
{
function __construct() {
parent::__construct();
$stmt = $this->prepare('SELECT * FROM users WHERE id=? ');
$stmt->bindValue(1, 1); //$stmt-> auto-complete is unavailable
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($rows); //i get results
}
}
我的Model類看起來像這樣.
class Model extends PDO
{
public static $log = array();
private $query_cache = array();
public function __construct() {
parent::__construct(
"mysql:dbname=".MYSQL_DB.";host=".MYSQL_HOST,
MYSQL_USER, MYSQL_PASSWORD
);
}
public function query($query) {
$time = "";
$query = mysql_real_escape_string(preg_replace( '/\s+/', ' ', $query ));
if (key_exists($query,$this->query_cache)
&& is_object($this->query_cache[$query]))
{
$result = $this->query_cache[$query];
} else {
$start = microtime(true);
$result = parent::query($query);
$time = microtime(true) - $start;
$this->query_cache[$query] = $result;
Logger::$logText['DATABASE'][] = array(
'QUERY' => $query,
'TIME' => number_format($time,4)
);
}
return $result;
}
/**
* @return LoggedPDOStatement
*/
public function prepare($query) {
return new LoggedPDOStatement(parent::prepare($query));
}
}
我的LoggedPDOStatement看起來像這樣.
class LoggedPDOStatement
{
/**
* The PDOStatement we decorate
*/
private $statement;
public function __construct(PDOStatement $statement) {
$this->statement = $statement;
}
/**
* When execute is called record the time it takes and
* then log the query
* @return PDO result set
*/
public function execute() {
$start = microtime(true);
$result = $this->statement->execute();
$time = microtime(true) - $start;
Model::$log[] = array(
'query' => '[PS] ' . $this->statement->queryString,
'time' => round($time * 1000, 3)
);
return $result;
}
/**
* Other than execute pass all other calls to the PDOStatement object
* @param string $function_name
* @param array $parameters arguments
*/
public function __call($function_name, $parameters) {
return call_user_func_array(
array($this->statement, $function_name), $parameters
);
}
}
他們有更好的方法嗎?
總結(jié)
以上是生活随笔為你收集整理的php pdo 时间,php – 使用PDO执行时间记录查询 – 自动完成功能无效的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qfdw.xyz sq.php,GitH
- 下一篇: 花茶多少钱啊?